Aller au contenu
Jointures

RIGHT JOIN

RIGHT JOIN est le miroir du LEFT JOIN : il garde toutes les lignes de la table de droite, complétées par NULL à gauche. Disponible dans SQLite depuis la 3.39, donc dans le playground.

  • jointure droite
  • OUTER
  • RIGHT OUTER JOIN

Syntaxe

Modèle
SELECT a.col, b.colFROM table_a aRIGHT JOIN table_b b ON a.b_id = b.id;

Exemple

Exemple concret
SELECT s.name AS eleve, c.name AS classeFROM students sRIGHT JOIN classes c ON c.id = s.class_idORDER BY c.name, s.name;-- Jeu de données : école-- Toutes les classes sont gardées, même la 4ème A sans élève.-- Résultat attendu :-- NULL | 4ème A-- Emma Blanc | 5ème A-- Alice Leroy | 6ème A-- Bob Petit | 6ème A-- Clara Moreau | 6ème B-- David Roux | 6ème B

À retenir

  1. A RIGHT JOIN B donne le même résultat que B LEFT JOIN A. On préfère souvent la forme LEFT, plus naturelle à lire : on part de la table qu'on veut garder entière.
  2. SQLite gère RIGHT JOIN et FULL OUTER JOIN depuis la version 3.39 (2022). Sur un SQLite plus ancien (vieux systèmes embarqués), réécrivez la requête en LEFT JOIN en inversant les tables.
  3. Piège : mélanger LEFT et RIGHT JOIN dans une même requête rend très difficile de savoir quelles lignes sont conservées. Réordonnez les tables pour n'utiliser qu'un seul sens.
  4. Pour garder les lignes sans correspondance des deux côtés à la fois, utilisez FULL OUTER JOIN.

Voir aussi