J'ai deux tables, "hierarchy_table" et "name_table".
La table de hiérarchie contient un objet qui a plusieurs parents et enfants. Chaque parent et enfant est référencé par id.
| object_id | parent_id_1 | parent_id_2 | child_id_1 | child_id_2 |
-----------------------------------------------------------------------------
| 1234 | 9999 | 9567 | 5555 | 5556 |
-----------------------------------------------------------------------------
Chaque ID d'objet dans la table hierarchy_table a une entrée dans la table name_table:
| name_id | name |
--------------------------
| 1234 | ABCD |
--------------------------
| 9999 | ZYXW |
--------------------------
| ...
Comment joindre plusieurs fois chaque identifiant de la hierarchy_table à la name_table afin d'avoir un résultat où chaque nom est rempli?
Comme ça:
| object | parent_1 | parent_2 | child_1 | child_2 |
-----------------------------------------------------------------------------
| ABCD | ZYXW | BBBB | CCCC | DDDD |
-----------------------------------------------------------------------------
Remarque: les noms de table dans l'exemple sont juste pour la clarté / simplicité, les vrais noms ont des noms propres.
la source
FROM
.Vous pouvez utiliser un nom d'alias pour les tables impliquées dans la requête.
la source
TL&DR: l' alias doit être utilisé lorsque vous souhaitez vous connecter plusieurs fois à la même table
Rationnel:
Dans Postgres, les gens joignent généralement une colonne d'une table à une autre colonne d'une table différente. C'était génial du point de vue de la conception comme cas d'utilisation normal. Lorsque vous souhaitez joindre des colonnes supplémentaires, vous devrez utiliser des alias (meilleure pratique).
COMMENT:
Lorsque vous effectuez une INNER JOIN, assurez-vous d'ajouter une clause AS avec le nom.
Exemple
Si vous remarquez la réponse «acceptée», procédez comme ci-dessus.
la source