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_id | employee_name | manager_id |
| 1 | Minke | 2 |
| 2 | Temur | 3 |
| 3 | Tatjana | 4 |
| 4 | Marinela |
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_idNous 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_id | employee_name | manager_name |
|---|---|---|
| 1 | Minke | Temur |
| 2 | Temur | Tatjana |
| 3 | Tatjana | Marinela |
Défi
MoyenTables 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;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
1Introduction
IntroductionQu’est-ce qu’une base de donnéesConcepts des bases de donnéesValeurs uniques4D’autres mots-clés
Le mot-clé INLe mot-clé BETWEENLe mot-clé LIKELe mot-clé ASRécapitulatif - Modèles de téléphones portables2Conditions
Bases des conditionsLe mot-clé ANDLe mot-clé ORLe mot-clé NOTCombinaison de plusieurs conditionsParenthèsesBooléens5Opérations arithmétiques
Opérateurs mathématiquesColonnes mathématiquesL’opération moduloLa fonction ROUND()3Format de retour spécifique
Valeurs NULLTrier les résultats, partie 1Trier les résultats, partie 2Récapitulatif - Entreprise de cybersécuritéLimiter le nombre d’enregistrementsRécapitulatif - Usine de véhicules6Défis d’introduction
Récapitulatif - Élection parlementaireRécapitulatif - Arrestation criminelle par la policeRécapitulatif - Récipient de boisson au barRécapitulatif - Ingénieur de nouvelles colonnes9Tables multiples
Jointure de base, partie 1Jointure de base, partie 2Récapitulatif - JointureAuto-jointureRécapitulatif - Auto-jointureUnionSimplifier les requêtes, mot-clé WITHRécapitulatif - Requêtes WITHRécapitulatif - Entrepreneur immobilier12Fonctions de fenêtre – partie 2
Fonctions RANK & DENSE_RANKRécapitulatif – RANK & DENSE_RANKFonction NTILEFonctions d’agrégationCritère ROWS & RANGEEntraînez-vous par vous-même : Playground SQL