Menu
Coddy logo textTech

Auto-jointure

Fait partie de la section Les fondamentaux du Journey SQL de Coddy. Leçon 46 sur 72.

Les auto-jointures sont un type différent de jointure. Jusqu’à présent, nous avons parlé de jointures entre plusieurs tables, mais les auto-jointures s’effectuent sur la même table. Un exemple classique serait une table d’employés.

employee_idemployee_namemanager_id
1Minke2
2Temur3
3Tatjana4
4Marinela 

Chaque employé a un responsable, à l’exception du responsable le plus haut placé, et chaque responsable est également un employé.

Le problème : pour chaque employé, nous voulons connaître le nom du responsable.

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 effectuons une jointure entre la même table, sauf qu’une fois nous l’appelons e1 et la seconde fois, elle s’appelle 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 :

  • friends : id, name, friend_id

Trouvez les paires d’amis qui sont des amis réciproques (une amitié réciproque 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 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