Skip to content

RIGHT JOIN – Jointure droite

Bonne lecture et bon apprentissage !
Junior TSAFACK – 08/08/2026
⏱️ Temps de lecture estimé : 5 minutes


En SQL, la commande RIGHT JOIN (ou RIGHT OUTER JOIN) est un type de jointure entre 2 tables qui permet de retourner tous les enregistrements de la table de droite (RIGHT = droite) même s’il n’y a pas de correspondance avec la table de gauche. S’il y a un enregistrement de la table de droite qui ne trouve pas de correspondance dans la table de gauche, alors les colonnes de la table de gauche auront NULL pour valeur.

Bon à savoir : RIGHT JOIN est l’exact symétrique de LEFT JOIN. En pratique, RIGHT JOIN est moins utilisé car on peut généralement obtenir le même résultat en inversant l’ordre des tables et en utilisant un LEFT JOIN.


L’utilisation de cette commande SQL s’effectue de la façon suivante :

SELECT *
FROM table1
RIGHT JOIN table2 ON table1.id = table2.fk_id;

La syntaxe de cette requête SQL peut aussi s’écrire de la façon suivante :

SELECT *
FROM table1
RIGHT OUTER JOIN table2 ON table1.id = table2.fk_id;

Les deux syntaxes sont équivalentes. Le mot-clé OUTER est optionnel.

Explication : Cette syntaxe stipule qu’il faut lister toutes les lignes du tableau table2 (tableau de droite) et afficher les données associées du tableau table1 s’il y a une correspondance entre l’ID de table1 et la clé étrangère de table2. S’il n’y a pas de correspondance, l’enregistrement de table2 sera affiché et les colonnes de table1 vaudront toutes NULL.


Prenons l’exemple d’une base de données qui contient des utilisateurs et un historique d’achat de ces utilisateurs. Ces 2 tables sont reliées entre elles grâce à la colonne utilisateur_id de la table des commandes. Cela permet de savoir à quel utilisateur est associé un achat.

Table « utilisateur » :

id prenom nom email ville actif
1 Aimée Marechal [email protected] Paris 1
2 Esmée Lefort [email protected] Lyon 0
3 Marine Prevost [email protected] Lille 1
4 Luc Rolland [email protected] Marseille 1

Table « commande » :

utilisateur_id date_achat num_facture prix_total
1 2013-01-23 A00103 203.14
1 2013-02-14 A00104 124.00
2 2013-02-17 A00105 149.45
3 2013-02-21 A00106 235.35
5 2013-03-02 A00107 47.58

Pour afficher toutes les commandes avec le nom de l’utilisateur correspondant, il est normalement d’habitude d’utiliser INNER JOIN. Malheureusement, si l’utilisateur a été supprimé de la table (ex: utilisateur 5), l’INNER JOIN ne retournerait pas l’achat. L’utilisation de RIGHT JOIN permet de retourner tous les achats et d’afficher le nom de l’utilisateur s’il existe.

SELECT utilisateur.id,
utilisateur.prenom,
utilisateur.nom,
commande.utilisateur_id,
commande.date_achat,
commande.num_facture
FROM utilisateur
RIGHT JOIN commande ON utilisateur.id = commande.utilisateur_id;

Résultat :

id prenom nom utilisateur_id date_achat num_facture
1 Aimée Marechal 1 2013-01-23 A00103
1 Aimée Marechal 1 2013-02-14 A00104
2 Esmée Lefort 2 2013-02-17 A00105
3 Marine Prevost 3 2013-02-21 A00106
NULL NULL NULL 5 2013-03-02 A00107

Observations :

  • La facture A00107 est liée à l’utilisateur numéro 5, qui n’existe pas dans la table utilisateur.
  • Grâce à RIGHT JOIN, l’achat est tout de même affiché mais les informations liées à l’utilisateur sont remplacées par NULL.
  • Toutes les commandes sont affichées, y compris celles dont l’utilisateur a été supprimé.

Utiliser des alias pour simplifier la requête

Section titled “Utiliser des alias pour simplifier la requête”
SELECT u.id, u.prenom, u.nom,
c.utilisateur_id, c.date_achat, c.num_facture
FROM utilisateur u
RIGHT JOIN commande c ON u.id = c.utilisateur_id;

RIGHT JOIN avec condition supplémentaire (WHERE vs ON)

Section titled “RIGHT JOIN avec condition supplémentaire (WHERE vs ON)”

Comme pour LEFT JOIN, il est important de comprendre la différence entre placer une condition dans ON ou dans WHERE.

SELECT u.id, u.nom, c.date_achat, c.prix_total
FROM utilisateur u
RIGHT JOIN commande c ON u.id = c.utilisateur_id AND c.prix_total > 150;

Résultat :

id nom date_achat prix_total
1 Aimée 2013-01-23 203.14
1 Aimée NULL NULL
2 Esmée NULL NULL
3 Marine 2013-02-21 235.35
NULL NULL 2013-03-02 47.58

Explication : La condition c.prix_total > 150 s’applique uniquement à la jointure. Toutes les commandes sont conservées (y compris celles sans utilisateur), mais seules les commandes de plus de 150€ sont affichées avec les informations de l’utilisateur.

SELECT u.id, u.nom, c.date_achat, c.prix_total
FROM utilisateur u
RIGHT JOIN commande c ON u.id = c.utilisateur_id
WHERE c.prix_total > 150;

Résultat :

id nom date_achat prix_total
1 Aimée 2013-01-23 203.14
3 Marine 2013-02-21 235.35

Explication : La condition WHERE s’applique sur l’ensemble du résultat. La commande du 2013-03-02 (47.58€) est exclue car son prix total n’est pas > 150.


Il est possible d’enchaîner plusieurs RIGHT JOIN pour lier plusieurs tables :

SELECT u.nom, u.prenom,
c.date_achat, c.num_facture,
p.nom AS produit_nom
FROM utilisateur u
RIGHT JOIN commande c ON u.id = c.utilisateur_id
RIGHT JOIN commande_produit cp ON c.id = cp.commande_id
RIGHT JOIN produit p ON cp.produit_id = p.id;

Remarque : Dans la pratique, enchaîner plusieurs RIGHT JOIN peut devenir difficile à lire. Il est souvent préférable de réorganiser les tables et d’utiliser des LEFT JOIN pour une meilleure lisibilité.


LEFT JOIN RIGHT JOIN
Table de gauche = source principale Table de droite = source principale
Toutes les lignes de la table de gauche Toutes les lignes de la table de droite
Plus couramment utilisé Moins courant, souvent remplacé par LEFT JOIN

Équivalence :

SELECT * FROM table1 RIGHT JOIN table2 ON table1.id = table2.fk_id;

est équivalent à :

SELECT * FROM table2 LEFT JOIN table1 ON table2.fk_id = table1.id;

Il y a peu de situations où RIGHT JOIN est préférable à LEFT JOIN. Cependant, il peut être utile dans les cas suivants :

  1. Lorsqu’on lit une requête existante et qu’on veut conserver la structure pour des raisons de clarté (par exemple, pour garder l’ordre des tables dans une requête déjà écrite).

  2. Dans des requêtes complexes où l’ordre des tables est imposé par d’autres contraintes (par exemple, dans des vues ou des sous-requêtes).

  3. Pour des raisons stylistiques quand on veut mettre l’accent sur la table de droite comme table principale.

Bon à savoir : La plupart des développeurs préfèrent utiliser LEFT JOIN systématiquement pour éviter la confusion. Si vous utilisez RIGHT JOIN, assurez-vous de bien documenter votre requête.


  1. Préférez LEFT JOIN à RIGHT JOIN : il est plus intuitif de lire une requête de gauche à droite.

  2. Soignez la lisibilité : si vous utilisez RIGHT JOIN, assurez-vous que l’ordre des tables rend la requête compréhensible.

  3. Indexez les colonnes de jointure pour de meilleures performances.

  4. Utilisez des alias pour simplifier l’écriture des requêtes.

  5. Faites attention à la différence entre ON et WHERE : les conditions dans ON affectent la jointure, tandis que celles dans WHERE filtrent le résultat final.


Vous savez désormais comment utiliser RIGHT JOIN pour conserver toutes les lignes de la table de droite. Mais que faire si vous souhaitez conserver toutes les lignes des deux tables, qu’il y ait correspondance ou non ?

👉 Chapitre 36 : FULL JOIN – Jointure externe complète


Bonne continuation !
Junior TSAFACK – 08/08/2026