Menu
Coddy logo textTech

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_idemployee_namemanager_id
1Minke2
2Temur3
3Tatjana4
4Marinela 

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_id

Nous 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_idemployee_namemanager_name
1MinkeTemur
2TemurTatjana
3TatjanaMarinela
challenge icon

Défi

Moyen

Tables 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;
quiz iconTestez-vous

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

Entraînez-vous par vous-même : Playground SQL