Self join
Fait partie de la section Les fondamentaux du Journey SQL de Coddy — leçon 46 sur 72.
Les auto-jointures sont des types de jointures différents. Jusqu'à présent, nous avons parlé des jointures de plusieurs tables, mais les auto-jointures sont jointes à la même table. Un exemple classique serait une table d'employees.
| employee_id | employee_name | manager_id |
| 1 | Minke | 2 |
| 2 | Temur | 3 |
| 3 | Tatjana | 4 |
| 4 | Marinela |
Chaque employé a un manager, à l'exception du manager de plus haut niveau, et chaque manager est également un employé.
Le problème : Pour chaque employé, nous voulons connaître le nom du manager.
SELECT e2.employee_id, e2.employee_name, e1.employee_name as manager_name
FROM employees as e1
JOIN employees as e2 ON e1.employee_id = e2.manager_idNous effectuons une jointure sur la même table, sauf qu'une fois nous l'appelons e1 et la deuxième fois nous l'appelons e2. La jointure se fait entre les champs employee_id et manager_id.
Le résultat :
| employee_id | employee_name | manager_name |
|---|---|---|
| 1 | Minke | Temur |
| 2 | Temur | Tatjana |
| 3 | Tatjana | Marinela |
Défi
MoyenTables et colonnes disponibles :
<strong>friends</strong>:<strong>id</strong>,<strong>name</strong>,<strong>friend_id</strong>
Trouvez les paires d'amis qui sont des amis mutuels (une amitié mutuelle existe lorsque le friend_id de la personne A pointe vers la personne B ET que le friend_id de la personne B pointe vers la personne A). Affichez les noms des deux amis sur une seule ligne. Nommez les colonnes friend1 and friend2.
Note : Incluez dans la clause WHERE le critère friend1.id < friend2.id afin de ne pas inclure de paires en double
Aide-mémoire
Les auto-jointures vous permettent de joindre une table à elle-même en utilisant des alias de table. C'est utile lorsque vous devez comparer des lignes au sein de la même table ou établir des relations entre des enregistrements dans la même table.
Syntaxe de base de l'auto-jointure :
SELECT columns
FROM table_name AS alias1
JOIN table_name AS alias2 ON alias1.column = alias2.columnExemple avec des employés et des managers :
SELECT e2.employee_id, e2.employee_name, e1.employee_name as manager_name
FROM employees as e1
JOIN employees as e2 ON e1.employee_id = e2.manager_idLes points clés :
- Utilisez différents alias (par exemple,
e1,e2) pour la même table - La condition de jointure connecte les champs liés entre les alias
- Utile pour les données hiérarchiques comme les relations employé-manager
Essayez vous-même
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Les fondamentaux
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns