0Pricing
Coding Interview Prep · Leçon

Sémantique de RIGHT et FULL OUTER JOIN

Savoir quand utiliser chacune et comment réécrire RIGHT avec LEFT

Sémantique de RIGHT et FULL OUTER JOIN est une leçon Coding Interview Prep gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Coding Interview Prep, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Coding Interview Prep comprend 4 leçons au total.

Au-delà de LEFT JOIN

Une fois que vous comprenez LEFT JOIN, les intervieweurs testent son image miroir et la combinaison des deux : RIGHT JOIN et FULL OUTER JOIN.

  • RIGHT JOIN conserve chaque ligne de la table de droite.
  • FULL OUTER JOIN conserve les lignes sans correspondance des deux tables.

Cette leçon définit précisément chacune de ces jointures et présente l’astuce de réécriture que les intervieweurs apprécient : tout RIGHT JOIN peut devenir un LEFT JOIN.

Définition de RIGHT JOIN

Un RIGHT JOIN (ou RIGHT OUTER JOIN) conserve chaque ligne de la table de droite, celle qui est écrite après le mot-clé JOIN. Les lignes de droite sans correspondance apparaissent avec NULL dans les colonnes de la table de gauche.

C’est l’image miroir exacte de LEFT JOIN. Alors que LEFT conserve la table nommée en premier, RIGHT conserve celle nommée en second.

SELECT c.name, o.amount
FROM orders o
RIGHT JOIN customers c
  ON o.customer_id = c.id;
-- keeps ALL customers, even those
-- with no order (Carol -> amount NULL)

Les tables, encore une fois

Les données sont les mêmes qu’auparavant. Carol (la cliente 3) n’a aucune commande. Ici, toutes les lignes de commande font référence à un client existant ; lorsque les clients constituent le côté conservé, aucune commande n’est orpheline.

-- customers           orders
-- 1 | Alice           10 | 1 | 50
-- 2 | Bob             11 | 1 | 75
-- 3 | Carol           12 | 2 | 20

Réécrire RIGHT en LEFT

L’idée clé à retenir pour l’entretien : RIGHT JOIN est rarement utilisé en pratique, car vous pouvez toujours inverser l’ordre des tables et utiliser un LEFT JOIN. Les deux requêtes ci-dessous sont logiquement identiques.

De nombreux guides de style interdisent complètement RIGHT JOIN, car il est plus facile de raisonner de gauche à droite en conservant toujours la table de gauche.

-- RIGHT JOIN
SELECT c.name, o.amount
FROM orders o
RIGHT JOIN customers c ON o.customer_id = c.id;

-- Equivalent LEFT JOIN (preferred)
SELECT c.name, o.amount
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id;

Définition de FULL OUTER JOIN

Un FULL OUTER JOIN conserve les lignes sans correspondance des deux tables. Considérez-le comme la combinaison d’un LEFT JOIN et d’un RIGHT JOIN :

  • Les paires correspondantes apparaissent normalement.
  • Pour les lignes de gauche sans correspondance : les colonnes de droite valent NULL.
  • Pour les lignes de droite sans correspondance : les colonnes de gauche valent NULL.

Il répond à la demande suivante : "montrez-moi tout des deux côtés en alignant les correspondances".

SELECT c.name, o.id AS order_id
FROM customers c
FULL OUTER JOIN orders o
  ON o.customer_id = c.id;

Quand FULL OUTER JOIN est particulièrement utile

FULL OUTER JOIN est la solution privilégiée pour le rapprochement : comparer deux jeux de données qui devraient correspondre, mais qui peuvent présenter des différences.

Imaginez une table orders et une table payments distincte. Un FULL OUTER JOIN sur l’identifiant de commande fait apparaître dans un même résultat les commandes sans paiement et les paiements sans commande correspondante, chacun étant signalé par des NULL du côté manquant.

SELECT o.id AS order_id, p.id AS payment_id
FROM orders o
FULL OUTER JOIN payments p
  ON p.order_id = o.id
WHERE o.id IS NULL OR p.id IS NULL;
-- rows where one side is missing

Connaissance des dialectes

Un recruteur peut sonder votre maîtrise de la portabilité. MySQL ne possède pas de mot-clé FULL OUTER JOIN (jusqu'à la version 8). Postgres, SQL Server et Oracle le prennent en charge.

Dans MySQL, vous pouvez l'émuler en combinant une LEFT JOIN et une RIGHT JOIN avec UNION (qui supprime les lignes correspondantes dupliquées). Connaître cette distinction témoigne d'une expérience concrète.

-- FULL OUTER JOIN emulated in MySQL
SELECT c.name, o.id FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
UNION
SELECT c.name, o.id FROM customers c
RIGHT JOIN orders o ON o.customer_id = c.id;

Les quatre types de jointure en un coup d'œil

Gardez ce tableau en tête. « Conservées » signifie que les lignes sans correspondance subsistent avec des NULL.

  • INNER JOIN : uniquement les lignes correspondantes. Rien n'est conservé.
  • LEFT JOIN : toutes les lignes de gauche sont conservées.
  • RIGHT JOIN : toutes les lignes de droite sont conservées.
  • FULL OUTER JOIN : les deux côtés sont conservés.

Toute question d'entretien sur les jointures externes revient à choisir le ou les côtés à conserver.

Choisir entre ces types

Choisissez la jointure en vous demandant : « Quelles lignes sans correspondance dois-je conserver ? »

  • Conserver uniquement les lignes de la table principale : LEFT JOIN (placez la table principale en premier).
  • Besoin des deux ensembles sans correspondance pour un rapprochement : FULL OUTER JOIN.
  • Seules les correspondances comptent : INNER JOIN.

Vous choisissez presque jamais activement RIGHT JOIN ; reformulez-la plutôt en LEFT JOIN.

Un exemple de rapprochement

Mettez FULL OUTER JOIN à profit pour étiqueter l'état de chaque ligne. Un CASE appliqué au schéma de NULL indique de quel côté il manque une ligne : c'est la requête d'audit classique.

SELECT
  COALESCE(o.id, p.order_id) AS ord,
  CASE
    WHEN p.id IS NULL THEN 'no payment'
    WHEN o.id IS NULL THEN 'orphan payment'
    ELSE 'matched'
  END AS status
FROM orders o
FULL OUTER JOIN payments p ON p.order_id = o.id;

Une idée reçue fréquente

Les candidats pensent souvent que FULL OUTER JOIN renvoie le produit cartésien des lignes sans correspondance. Ce n'est pas le cas. Les lignes sans correspondance de chaque côté apparaissent exactement une fois, associées à des NULL, et ne sont jamais multipliées les unes par les autres.

Les lignes correspondantes suivent toujours la multiplication normale des jointures (une ligne de sortie par paire correspondante), selon la même règle de multiplication que pour toute jointure.

Vérification rapide

Un recruteur vous demande de réécrire une requête pour une équipe qui interdit RIGHT JOIN.

Récapitulatif

RIGHT JOIN conserve la table de droite ; FULL OUTER JOIN conserve les deux tables. Toute RIGHT JOIN peut être réécrite en LEFT JOIN en inversant l'ordre des tables, raison pour laquelle les équipes privilégient LEFT.

  • FULL OUTER est idéal pour rapprocher deux ensembles de données.
  • MySQL ne prend pas en charge FULL OUTER ; émulez-le avec LEFT + RIGHT + UNION.
  • Choisissez une jointure en décidant quelles lignes sans correspondance conserver.
  • Les lignes sans correspondance apparaissent une fois avec des NULL, jamais sous forme de produit cartésien.

Questions Fréquemment Posées

La leçon « Sémantique de RIGHT et FULL OUTER JOIN » est-elle gratuite ?

Oui — le texte complet de « Sémantique de RIGHT et FULL OUTER JOIN » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Coding Interview Prep, passe à CoddyKit PRO. Le cours Coding Interview Prep comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Sémantique de RIGHT et FULL OUTER JOIN » ?

Savoir quand utiliser chacune et comment réécrire RIGHT avec LEFT Tu pratiques Coding Interview Prep avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Coding Interview Prep ?

Aucune expérience préalable n'est requise. Coding Interview Prep sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Sémantique de RIGHT et FULL OUTER JOIN » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Coding Interview Prep ?

Oui. Chaque leçon Coding Interview Prep inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. LEFT JOIN et conservation des lignes sans correspondance
  2. Sémantique de RIGHT et FULL OUTER JOIN
  3. Trouver les lignes sans correspondance (jointure anti)
  4. Le piège de WHERE sur une jointure externe
← Retour à Coding Interview Prep