Code SQL copié dans le presse-papiers
Apprenez à utiliser le SQL RIGHT JOIN (ou RIGHT OUTER JOIN) pour récupérer tous les enregistrements de la table de droite et les correspondances de la table de gauche. Cette leçon explique pourquoi RIGHT JOIN est souvent considéré comme le miroir du LEFT JOIN, quand l'utiliser et comment garder vos requêtes lisibles. Maîtrisez les techniques de récupération complète de données avec la base Sakila.
RU EN PT

Leçon 5.4 : RIGHT JOIN — Inclure tous les enregistrements de la table de droite

Le RIGHT JOIN (ou RIGHT OUTER JOIN) est l'opposé logique du LEFT JOIN. Il garantit que toutes les lignes de la table "droite" (celle mentionnée après le mot-clé JOIN) sont incluses dans le résultat, qu'elles aient ou non une correspondance dans la table "gauche".

Qu'est-ce qu'un RIGHT JOIN ?

Un RIGHT JOIN retourne toutes les lignes de la table de droite et les lignes correspondantes de la table de gauche. Si aucune correspondance n'existe dans la table de gauche, les colonnes de celle-ci seront NULL.

Visualisation :

   Table A (customer)           Table B (payment)
   +----+----------+            +----+----------+
   | id | name     |            | id | amount   |
   +----+----------+            +----+----------+
   | 1  | Alice    | <--------> | 1  | 10.00    | (Correspondance !)
   | NULL          | <--------> | 4  | 50.00    | (Pas de client, paiement conservé !)
   +----+----------+            +----+----------+

Dans cet exemple, le paiement avec l'ID 4 est conservé même si aucun client n'y est associé (dans une base bien conçue comme Sakila, cela reste rare à cause des contraintes de clé étrangère).

Syntaxe du RIGHT JOIN

La syntaxe suit le même schéma que les autres types de jointures :

SELECT
    table1.column1,
    table2.column2
FROM
    table1
RIGHT JOIN
    table2 ON table1.common_column = table2.common_column;
  • RIGHT JOIN : garantit que toutes les lignes de table2 (la table de droite) sont conservées.
  • ON : spécifie la condition de jointure.

Exemples pratiques (base Sakila)

Le RIGHT JOIN est moins courant que le LEFT JOIN (car tout RIGHT JOIN peut être réécrit en LEFT JOIN en inversant l'ordre des tables), mais il reste important à comprendre.

1. Lister toutes les adresses et leur personnel

Supposons que l'on souhaite voir toutes les adresses et vérifier si un membre du personnel y est affecté.

SELECT
    s.first_name,
    s.last_name,
    a.address
FROM
    staff AS s
RIGHT JOIN
    address AS a ON s.address_id = a.address_id
ORDER BY
    s.last_name;

Cela retournera toutes les adresses de la table address. Si aucune adresse n'a de personnel, les noms seront NULL.

RIGHT JOIN vs LEFT JOIN

Chaque RIGHT JOIN peut être exprimé comme un LEFT JOIN. La plupart des développeurs SQL préfèrent utiliser uniquement LEFT JOIN et simplement inverser l'ordre des tables pour garder la "table principale" à gauche, ce qui rend la requête plus lisible.

Exemple d'équivalence :

-- Avec RIGHT JOIN
SELECT f.title, i.inventory_id
FROM film f
RIGHT JOIN inventory i ON f.film_id = i.film_id;

-- Avec LEFT JOIN (même résultat)
SELECT f.title, i.inventory_id
FROM inventory i
LEFT JOIN film f ON i.film_id = f.film_id;

Points clés de cette leçon

  • RIGHT JOIN retourne toutes les lignes de la table de droite.
  • C'est l'image miroir du LEFT JOIN.
  • Les colonnes de la table de gauche seront NULL si aucune correspondance n'est trouvée.
  • La plupart des développeurs préfèrent le LEFT JOIN pour la cohérence, mais il est essentiel de comprendre les deux pour lire du code existant.