Leçon 4 / 9 — Chapitre 2: Jointures avancées et combinées
Jointures chaînées : combiner 3 tables
Rien n'empêche d'enchaîner plusieurs JOIN dans une même requête, pour relier plus de deux tables entre elles.
SELECT p.nom, c.quantite, l.transporteur, l.statut
FROM produits p
JOIN commandes c ON p.id = c.produit_id
JOIN livraisons l ON c.id = l.id;
Chaque JOIN s'applique au résultat du précédent : produits est d'abord jointe à commandes, puis ce résultat intermédiaire est joint à livraisons. Ici, les trois jointures sont des INNER JOIN : seules les lignes qui trouvent une correspondance à chaque étape survivent.
Sur nos données, seules les commandes d'id 1, 3 et 4 ont une livraison associée (voir la leçon précédente) — les commandes 2 et 5 n'en ont aucune, elles disparaissent donc du résultat, même si elles avaient bien un produit correspondant. Le résultat final compte 3 lignes : Cahier/3/Rapido/livree, Savon/5/Rapido/livree, Jus/1/Expressa/en_cours.
À retenir :
- Une requête peut enchaîner plusieurs
JOIN: chaque nouvelle jointure s'applique au résultat déjà obtenu, pas à la table d'origine seule. - Avec des
INNER JOINen chaîne, une ligne ne survit que si elle trouve une correspondance à chaque étape de la chaîne. - Une ligne qui échoue à une seule étape de la chaîne (ici, une commande sans livraison) disparaît du résultat final, même si les étapes précédentes avaient réussi pour elle.
À vous de jouer : remplacez le second JOIN par un LEFT JOIN livraisons l ON c.id = l.id et déterminez combien de lignes le résultat contiendrait alors.
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 80 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès