Auto-jointures et alias
Joignez une table à elle-même à l’aide d’alias pour comparer des lignes au sein de cette table (employés et responsables, dates et dates précédentes).
Auto-jointures et alias est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.
Auto-JOIN : joindre une table à elle-même
La relation se trouve parfois au sein d’une seule table :
- Employés ↔ responsables (le responsable est lui-même un employé)
- Commentaires en fil (chaque commentaire possède un parent_id)
- Graphe d’amis (utilisateur ↔ utilisateur)
Mise en place
Une table employees avec une FK qui fait référence à cette même table :
CREATE TABLE employees (
id BIGSERIAL PRIMARY KEY,
full_name TEXT NOT NULL,
manager_id BIGINT REFERENCES employees(id)
);Joindre les employés à leurs responsables
Donnez un alias différent à chaque instance :
SELECT e.full_name AS employee, m.full_name AS manager
FROM employees e
JOIN employees m ON m.id = e.manager_id;Sans alias, la requête ne compilerait pas
Sans alias, vous ne pouvez pas savoir quel full_name vous désignez. Chaque référence est ambiguë :
-- ERROR: column reference "full_name" is ambiguous
SELECT full_name FROM employees JOIN employees ON ...LEFT JOIN pour les employés au sommet de la hiérarchie
Un INNER JOIN élimine les employés qui n’ont pas de responsable (par exemple, le CEO). Utilisez LEFT JOIN pour les conserver :
SELECT e.full_name AS employee, m.full_name AS manager
FROM employees e
LEFT JOIN employees m ON m.id = e.manager_id;Commentaires en fil
Affichez chaque commentaire avec le texte de son parent :
SELECT c.id, c.body, p.body AS parent_body
FROM comments c
LEFT JOIN comments p ON p.id = c.parent_id;Paires et combinaisons
Trouvez les paires de produits apparues dans la même commande (sans dupliquer les paires (A,B) et (B,A)) :
SELECT a.id AS product_a, b.id AS product_b
FROM order_items a
JOIN order_items b
ON a.order_id = b.order_id
AND a.product_id < b.product_id;Comparer des lignes adjacentes
Effectuez une auto-jointure sur la version « précédente » d’une ligne :
SELECT a.id, a.created_at, b.created_at AS prev_at
FROM events a
LEFT JOIN events b ON b.id = a.previous_id;Auto-JOIN ou fonction de fenêtrage
Pour de nombreuses tâches consistant à comparer chaque ligne à la précédente, une fonction de fenêtrage (LAG) est plus simple et plus rapide qu’une auto-jointure. Ce sujet est traité dans l’approfondissement des fonctions de fenêtrage.
Auto-JOIN récursifs
Vous devez parcourir N niveaux (organigramme, arborescence de discussion) ? Utilisez une CTE récursive — ce sujet est traité dans les sous-requêtes et les CTE.
Indexer la colonne FK
Ajoutez toujours un index sur la colonne FK qui fait référence à la même table. Sans cet index, la jointure parcourt toute la table pour chaque recherche de parent.
CREATE INDEX employees_manager_idx ON employees(manager_id);Récapitulatif
Les auto-jointures gèrent les relations au sein d'une même table.
- Deux alias pour deux copies virtuelles
LEFT JOINpour conserver les racines et les lignes de niveau supérieur- Indexer la colonne
FK - Les fonctions de fenêtrage peuvent simplifier les schémas de type « ligne précédente »
Vérification rapide
Vous joignez employees à elle-même pour trouver le responsable de chaque employé. Pourquoi les alias sont-ils nécessaires ?
Questions Fréquemment Posées
La leçon « Auto-jointures et alias » est-elle gratuite ?
Oui — le texte complet de « Auto-jointures et alias » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Auto-jointures et alias » ?
Joignez une table à elle-même à l’aide d’alias pour comparer des lignes au sein de cette table (employés et responsables, dates et dates précédentes). Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SQL Academy ?
Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Auto-jointures et alias » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?
Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Pourquoi les jointures (rappel du modèle relationnel)
- Fonctionnement de INNER JOIN
- LEFT/RIGHT JOIN et jointures OUTER
- Auto-jointures et alias