Aller au contenu
Jointures

SELF JOIN

Une auto-jointure relie une table à elle-même grâce à deux alias. Elle sert pour les hiérarchies (employé et manager) et pour comparer des lignes d'une même table entre elles.

  • auto-jointure
  • hiérarchie
  • manager
  • alias

Syntaxe

Modèle
SELECT e.col, m.colFROM table eLEFT JOIN table m ON m.id = e.parent_id;

Exemple

Exemple concret
SELECT e.name AS employe, m.name AS managerFROM employees eLEFT JOIN employees m ON m.id = e.manager_idWHERE e.department_id IN (1, 4)ORDER BY e.id;-- Jeu de données : entreprise-- Résultat attendu :-- Isabelle Renard | NULL-- Sandrine Lopez | Isabelle Renard-- Théo Brun | Sandrine Lopez

À retenir

  1. Les alias (e pour l'employé, m pour le manager) sont obligatoires : ce sont eux qui distinguent les deux rôles de la même table.
  2. Piège : avec INNER JOIN, la directrice générale, qui n'a pas de manager (manager_id NULL), disparaît du résultat. LEFT JOIN la conserve.
  3. Pour former des paires sans doublon (A-B mais pas B-A ni A-A), ajoutez la condition a.id < b.id.
  4. Une auto-jointure ne remonte qu'un niveau. Pour toute la chaîne hiérarchique, quelle que soit sa profondeur, utilisez une CTE récursive.

Voir aussi