0Pricing
SQL Academy · Leçon

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 JOIN pour 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

  1. Pourquoi les jointures (rappel du modèle relationnel)
  2. Fonctionnement de INNER JOIN
  3. LEFT/RIGHT JOIN et jointures OUTER
  4. Auto-jointures et alias
← Retour à SQL Academy