Self join
Fait partie de la section Les fondamentaux du Journey SQL de Coddy. Leçon 46 sur 72.
Les auto-jointures (self-joins) sont différents types de jointures. Jusqu'à présent, nous avons parlé des jointures de tables multiples, 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 le plus élevé, 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 faisons une jointure sur la même table sauf que la première fois nous l'appelons e1 et la deuxième fois 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 quand 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 dans une seule ligne. Nommez les colonnes friend1 et friend2.
Remarque : Incluez dans la clause WHERE le critère friend1.id < friend2.id afin de ne pas inclure de paires en double
Essayez vous-même
-- Joindre la table à elle-même pour qu'une ligne puisse montrer deux personnes différentes
SELECT ____ AS friend1, ____ AS friend2
FROM friends f1
JOIN friends f2 ON ____
-- Ne garder que les paires qui se pointent mutuellement
WHERE ____ AND f1.id < f2.id;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 columnsEntraînez-vous par vous-même : Playground SQL