Eu tenho duas tabelas, "hierarchy_table" e "name_table".
A tabela de hierarquia contém um objeto que possui vários pais e filhos. Cada pai e filho são referenciados por id.
| object_id | parent_id_1 | parent_id_2 | child_id_1 | child_id_2 |
-----------------------------------------------------------------------------
| 1234 | 9999 | 9567 | 5555 | 5556 |
-----------------------------------------------------------------------------
Cada ID de objeto na tabela hierarchy_ possui uma entrada na tabela name_table:
| name_id | name |
--------------------------
| 1234 | ABCD |
--------------------------
| 9999 | ZYXW |
--------------------------
| ...
Como associo cada ID na tabela hierarchy_table à tabela name_table várias vezes para que eu possa ter um resultado em que todos os nomes sejam preenchidos?
Como isso:
| object | parent_1 | parent_2 | child_1 | child_2 |
-----------------------------------------------------------------------------
| ABCD | ZYXW | BBBB | CCCC | DDDD |
-----------------------------------------------------------------------------
Nota: os nomes das tabelas no exemplo são apenas para maior clareza / simplicidade, os nomes reais têm nomes próprios.
fonte
FROM
.Você pode usar o nome alternativo para tabelas envolvidas na consulta.
fonte
TL&DR: Alias deve ser usado quando você deseja ingressar na mesma tabela várias vezes
Racional:
No Postgres, normalmente as pessoas associam uma coluna em uma tabela a outra coluna em uma tabela diferente. Isso foi brilhante da perspectiva do design, como o caso de uso normal. Quando você quiser ingressar em colunas adicionais, precisará usar aliases (prática recomendada).
COMO:
Ao executar uma INNER JOIN, adicione uma cláusula AS junto com o nome.
Exemplo
Se você perceber que a resposta 'aceita' faz isso acima.
fonte