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

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_id

Nous 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_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 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.column

Exemple 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_id

Les 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

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