XamSQL — la salle de sport SQL des francophones

Jointure · 30 min

Jointures multiples et self-join

Une requête peut croiser trois tables ou plus (etudiants → inscriptions → cours → notes), ou comparer une table a elle-meme (self-join) pour des relations hierarchiques ou des comparaisons entre lignes de la meme table.

Contexte

Une requête peut croiser trois tables ou plus (etudiants → inscriptions → cours → notes), ou comparer une table a elle-meme (self-join) pour des relations hierarchiques ou des comparaisons entre lignes de la meme table.

Explication

On peut enchainer plusieurs JOIN : FROM t1 JOIN t2 ON ... JOIN t3 ON ... Le self-join joint une table a elle-meme en utilisant des alias (t1 et t2). On le utilise pour les relations recuesives ou les comparaisons intra-table.

Exemple avec 3 tables : SELECT ... FROM etudiants e INNER JOIN inscriptions i ON i.etudiant_id = e.id INNER JOIN cours c ON c.id = i.cours_id;

Exemple self-join (table employes avec manager_id) : SELECT e.nom, m.nom AS manager FROM employes e LEFT JOIN employes m ON m.id = e.manager_id;

Exemple guidé

Objectif : afficher les etudiants avec leur cours et leur note.

1. Trois tables : etudiants, inscriptions, cours 2. Deux jointures : e→i (via etudiant_id), i→c (via cours_id) 3. On selectionne les colonnes pertinentes

SELECT e.prenom, e.nom, c.nom AS cours
FROM etudiants e
INNER JOIN inscriptions i ON i.etudiant_id = e.id
INNER JOIN cours c ON c.id = i.cours_id
ORDER BY e.nom, c.nom;
prenomnomcours
KhadijaBaAlgèbre linéaire
KhadijaBaBases de données
KhadijaBaMicroéconomie
MariamaCisséMicroéconomie
MariamaCisséRéseaux
AwaDiopAnalyse 2
AwaDiopMacroéconomie
AwaDiopRéseaux
PapeDioufBases de données
PapeDioufLittérature moderne
PapeDioufProgrammation Python
IbrahimaFallAnalyse 2
IbrahimaFallProgrammation Python
OusmaneGueyeMécanique classique
OusmaneGueyeProgrammation Python
NdeyeMbayeAnalyse 2
NdeyeMbayeMécanique classique
MoussaNdiayeAlgèbre linéaire
MoussaNdiayeBases de données
MoussaNdiayeProgrammation Python
FatouSarrBases de données
FatouSarrMacroéconomie
FatouSarrMécanique classique
AminataSowAlgèbre linéaire
AminataSowBases de données
AminataSowMicroéconomie
AminataSowRéseaux
CheikhSyBases de données
CheikhSyLittérature moderne

À retenir

On peut chainer 3 JOIN ou plus pour croiser plusieurs tables. Chaque JOIN a sa propre condition ON. Le self-join utilise deux alias de la meme table. Attention a la condition de jointure : incomplet = resultat incorrect (produit cartesien).

Exercices de cette leçon

Faire les exercices →