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
SELECT a.col, b.colFROM table_a aRIGHT JOIN table_b b ON a.b_id = b.id;Exemple
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
- 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.
- 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.
- 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.
- Pour garder les lignes sans correspondance des deux côtés à la fois, utilisez FULL OUTER JOIN.
Voir aussi
- LEFT JOINLEFT JOIN garde toutes les lignes de la table de gauche, avec ou sans correspondance à droite (les colonnes de droite valent alors NULL). Idéal pour compter des zéros ou repérer des absents.
- FULL OUTER JOINFULL OUTER JOIN garde toutes les lignes des deux tables, appariées quand c'est possible et complétées par NULL sinon. C'est l'outil du rapprochement entre deux listes ou deux périodes.
- INNER JOININNER JOIN associe les lignes de deux tables qui se correspondent, en général une clé étrangère et la clé primaire qu'elle référence. Les lignes sans correspondance disparaissent du résultat.