0Pricing
Coding Interview Prep · Leçon

Choisir le bon type de jointure

Une méthode de décision pour choisir la jointure adaptée à partir d’un énoncé

Choisir le bon type de jointure est une leçon Coding Interview Prep gratuite sur CoddyKit. Ceci est la leçon 4 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.

Choisir la jointure à partir d'un énoncé

Lors d'un entretien, la compétence la plus importante en matière de jointures n'est pas la syntaxe, mais la traduction d'un besoin exprimé en langage courant vers le type de jointure approprié. La plupart des candidats savent comment fonctionne chaque jointure, mais restent bloqués lorsqu'ils doivent en choisir une sous pression.

Cette leçon vous donne un cadre de décision reproductible afin que vous puissiez nommer la bonne jointure en quelques secondes.

La question centrale : quelles lignes doivent être conservées ?

Tout choix de jointure se résume à une question : de quel côté devez-vous conserver les lignes sans correspondance ?

  • Conserver uniquement les lignes correspondantes des deux côtés : INNER JOIN.
  • Conserver toutes les lignes de gauche, qu'elles correspondent ou non : LEFT JOIN.
  • Conserver toutes les lignes des deux côtés : FULL OUTER JOIN.
  • Conserver toutes les combinaisons : CROSS JOIN.

Déterminez d'abord ce qui doit être conservé ; le type de jointure en découle automatiquement.

Mots indicateurs pour INNER JOIN

Des formulations comme « les clients qui ont passé une commande », « les produits qui ont des avis » ou « les commandes avec leur client » indiquent qu'une correspondance doit exister des deux côtés. Il faut alors utiliser INNER JOIN.

Si l'élimination des lignes sans correspondance est acceptable ou souhaitée, INNER JOIN est le choix par défaut et le plus efficace.

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

Mots indicateurs pour LEFT JOIN

Des formulations comme « tous les clients, y compris ceux qui n'ont aucune commande » ou « lister chaque produit et le nombre de ses avis (zéro s'il n'en a aucun) » signifient que vous devez préserver la table de gauche, quelles que soient les correspondances. Il faut alors utiliser LEFT JOIN.

Les mots révélateurs sont « tous », « y compris ceux qui n'ont pas » et « même s'il n'y en a aucun ».

SELECT c.name, COUNT(o.order_id) AS orders
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
GROUP BY c.id, c.name;

Mots indicateurs de l'anti-jointure

Des formulations comme « les clients qui n'ont jamais commandé », « les produits sans ventes » ou « les employés sans responsable » demandent les lignes qui n'ont aucune correspondance. Il s'agit de l'anti-jointure : LEFT JOIN suivi de WHERE right_key IS NULL (ou NOT EXISTS).

Les mots clés sont « jamais », « aucun » ou « sans ».

SELECT c.name
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
WHERE o.order_id IS NULL;

Mots indicateurs pour FULL OUTER JOIN

Des formulations comme « rapprocher deux listes et afficher les entrées absentes d'un côté ou de l'autre » ou « comparer les comptes du mois dernier à ceux de ce mois en signalant les nouveaux comptes et ceux qui ont disparu » exigent de conserver les lignes sans correspondance des deux tables. Il faut alors utiliser FULL OUTER JOIN.

Les problèmes de rapprochement et de comparaison des différences sont les cas typiques.

SELECT a.id, b.id
FROM last_month a
FULL OUTER JOIN this_month b ON a.id = b.id
WHERE a.id IS NULL OR b.id IS NULL;

Mots indicateurs pour CROSS JOIN

Des formulations comme « chaque taille dans chaque couleur », « une ligne par magasin et par jour, même lorsqu'il n'y a eu aucune vente » ou « toutes les combinaisons possibles » indiquent un CROSS JOIN.

L'indice est la formulation « chaque... dans chaque » ou « toutes les combinaisons », lorsqu'aucune condition de correspondance n'existe entre les deux ensembles.

SELECT s.size, c.color
FROM sizes s
CROSS JOIN colors c;

Mots indicateurs pour SELF JOIN

Les formulations qui mettent une ligne en relation avec une autre ligne de la même table, comme « chaque employé et son responsable », « des paires d'utilisateurs dans la même ville » ou « trouver les adresses e-mail en double », indiquent une auto-jointure.

L'indice est qu'une entité fait référence à une autre entité du même type ou est comparée à celle-ci.

SELECT e.name, m.name AS manager
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.id;

Un exemple détaillé

Énoncé : « Afficher chaque produit et le nombre de fois où il a été commandé le mois dernier, y compris les produits qui n'ont jamais été commandés. »

Interprétation : « chaque produit » et « y compris ceux qui n'ont jamais été commandés » signifient qu'il faut conserver toutes les lignes de produits. Effectuez donc une LEFT JOIN entre les produits et les commandes, puis appliquez COUNT au côté des commandes (la valeur est 0 pour les produits sans correspondance, car COUNT ignore NULL).

SELECT p.name, COUNT(o.order_id) AS times_ordered
FROM products p
LEFT JOIN orders o
  ON o.product_id = p.id
 AND o.order_date >= DATE '2024-05-01'
GROUP BY p.id, p.name;

Piège courant : filtre dans ON ou dans WHERE

Dans la requête précédente, le filtre de date se trouve dans la clause ON, et non dans WHERE. Cela conserve les produits qui n'ont aucune commande correspondante.

Si vous déplaciez order_date >= ... dans WHERE, les lignes NULL des produits sans correspondance seraient éliminées, ce qui transformerait discrètement la LEFT JOIN en INNER JOIN et supprimerait précisément les produits que l'énoncé demandait de conserver.

-- WRONG: WHERE on the outer table removes unmatched products
-- ...
-- LEFT JOIN orders o ON o.product_id = p.id
-- WHERE o.order_date >= '2024-05-01'  <-- becomes an inner join

Le cadre de décision

Appliquez cette liste de contrôle à tout problème de jointure présenté sous forme d'énoncé :

  • La même table est-elle liée à elle-même ? -> SELF JOIN (et envisagez une CTE récursive si la profondeur n'est pas bornée).
  • Toutes les combinaisons, sans condition ? -> CROSS JOIN.
  • Uniquement les lignes correspondantes ? -> INNER JOIN.
  • Conserver tout un côté ? -> LEFT JOIN.
  • Conserver les lignes sans correspondance des deux côtés ? -> FULL OUTER JOIN.
  • Des lignes sans correspondance ? -> anti-jointure (LEFT JOIN + IS NULL).

Vérification rapide

Appliquez le cadre de décision à un énoncé.

Récapitulatif : choisir le bon type de jointure

Points essentiels :

  • Commencez chaque décision de jointure en vous demandant quelles lignes sans correspondance doivent être conservées.
  • Associez les mots indicateurs : « tous/y compris » -> LEFT, « jamais/aucun » -> anti-jointure, « chaque... dans chaque » -> CROSS, « chaque X et son X » -> SELF, rapprochement -> FULL OUTER.
  • Conservez les filtres d'une jointure externe dans la clause ON ; un filtre dans WHERE peut transformer discrètement une LEFT JOIN en INNER JOIN.
  • Présentez ce cadre de décision à voix haute lors des entretiens : cela montre votre raisonnement, et non votre seule capacité à mémoriser.

Questions Fréquemment Posées

La leçon « Choisir le bon type de jointure » est-elle gratuite ?

Oui — le texte complet de « Choisir le bon type de jointure » 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 « Choisir le bon type de jointure » ?

Une méthode de décision pour choisir la jointure adaptée à partir d’un énoncé 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 4 sur 4.

Combien de temps prend la leçon « Choisir le bon type de jointure » ?

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. CROSS JOIN et produits cartésiens
  2. SELF JOIN pour les hiérarchies
  3. Comparer des lignes au sein d’une même table
  4. Choisir le bon type de jointure
← Retour à Coding Interview Prep