0Pricing
Coding Interview Prep · Leçon

Comment INNER JOIN met les lignes en correspondance

Le modèle mental d’association des lignes qui simplifie toute question sur les jointures

Comment INNER JOIN met les lignes en correspondance est une leçon Coding Interview Prep gratuite sur CoddyKit. Ceci est la leçon 1 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.

La première jointure demandée en entretien

Lorsqu'un recruteur dit « faites une jointure entre ces deux tables », il parle presque toujours d'une INNER JOIN. C'est la jointure par défaut, et celle qui révèle si vous comprenez vraiment comment les lignes sont appariées.

Tout le sujet se résume à une phrase : une INNER JOIN examine chaque paire de lignes possible provenant des deux tables et ne conserve que les paires qui satisfont la condition ON. En l'absence de correspondance, la ligne disparaît simplement du résultat.

Retenez ce modèle mental : toutes les questions plus difficiles sur les jointures deviennent alors plus faciles.

Deux tables pour raisonner

Dans toute cette leçon, nous utilisons deux petites tables. clients contient les personnes qui ont passé des commandes, et commandes enregistre chaque commande avec le client auquel elle appartient.

  • customers(id, name)
  • orders(id, customer_id, amount)

Le lien entre elles est orders.customer_id = customers.id. Cette égalité est le prédicat de jointure dont dépend l'ensemble du résultat.

customers
id | name
1  | Ada
2  | Bob
3  | Cleo   -- no orders yet

orders
id | customer_id | amount
10 | 1           | 50
11 | 1           | 20
12 | 2           | 99

La requête INNER JOIN de base

Voici la requête canonique qu'un recruteur veut voir. Remarquez ses trois parties : les deux tables, le JOIN ... ON qui apparie les lignes et les colonnes que vous projetez.

Le mot-clé INNER est facultatif dans toutes les bases de données majeures. Écrire simplement JOIN signifie INNER JOIN, mais l'écrire explicitement signale votre intention et évite toute ambiguïté lors d'une revue de code.

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

À quoi ressemble le résultat

Exécutez la requête sur nos données d'exemple : vous obtenez trois lignes. Ada a deux commandes, elle apparaît donc deux fois. Bob apparaît une fois.

Cleo a disparu. Elle n'a aucune commande correspondante, donc INNER JOIN la retire entièrement. En entretien, il est essentiel d'indiquer clairement que les lignes sans correspondance disparaissent.

name | amount
Ada  | 50
Ada  | 20
Bob  | 99

Le modèle mental de l'appariement des lignes

Imaginez que la base de données forme d'abord le produit cartésien : chaque client est associé à chaque commande. Avec 3 clients et 3 commandes, cela donne 9 paires candidates.

Elle applique ensuite le prédicat ON et ne conserve que les paires pour lesquelles il est vrai. Parmi les 9 candidates, seules 3 satisfont o.customer_id = c.id.

Vous ne raisonnez pas ainsi pour les performances, mais c'est le modèle exact qui permet de répondre à toute question du type « combien de lignes sont renvoyées ? ».

Parcourir les paires candidates

Suivons le processus. Le commentaire placé après chaque paire indique si le prédicat est vrai.

Seules les trois lignes TRUE subsistent dans le résultat. Chaque paire impliquant Cleo (identifiant 3) échoue ; elle ne contribue donc en rien.

-- customer.id vs order.customer_id
(Ada=1, ord10 cust=1)  -> TRUE  keep
(Ada=1, ord11 cust=1)  -> TRUE  keep
(Ada=1, ord12 cust=2)  -> FALSE
(Bob=2, ord10 cust=1)  -> FALSE
(Bob=2, ord12 cust=2)  -> TRUE  keep
(Cleo=3, anything)     -> FALSE (no order matches 3)

INNER JOIN est indépendante de l'ordre

Question fréquente : est-il important de savoir quelle table vous placez en premier ? Pour une INNER JOIN, non. Ces deux requêtes renvoient des lignes identiques, car la condition ON est symétrique.

L'optimiseur peut lire l'une ou l'autre table en premier, quelle que soit la façon dont vous écrivez la requête. (Cela n'est pas vrai pour les jointures LEFT/RIGHT, qui seront abordées plus tard.)

-- These return the same rows
SELECT c.name, o.amount
FROM customers c JOIN orders o ON o.customer_id = c.id;

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

Les alias de tables sont attendus

Les recruteurs attendent des alias courts et clairs. Comparez la version verbeuse entièrement qualifiée avec la version propre utilisant des alias.

Les alias deviennent également obligatoires lorsqu'un nom de colonne existe dans les deux tables. Sélectionner un id non qualifié ici provoquerait une erreur de colonne ambiguë ; vous devez donc écrire c.id ou o.id.

-- verbose
SELECT customers.name, orders.amount
FROM customers JOIN orders
  ON orders.customer_id = customers.id;

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

Effectuer une jointure sur plusieurs colonnes

Le prédicat ON ne se limite pas à une seule égalité. Lorsqu'une relation est définie par une clé composite, vous combinez les conditions avec AND.

Ici, un prix s'applique à chaque produit dans chaque région : la correspondance doit donc être établie sur les deux colonnes. Les recruteurs utilisent cet exemple pour vérifier que vous n'avez pas seulement mémorisé les jointures sur une seule colonne.

SELECT s.units, p.unit_price
FROM sales s
INNER JOIN price_list p
  ON p.product_id = s.product_id
 AND p.region     = s.region;

Les jointures avec inégalité existent aussi

La condition ON peut être n'importe quelle expression booléenne, pas seulement =. Une jointure avec inégalité utilise des intervalles ou des inégalités. Un exemple classique consiste à associer un score à une tranche de notes.

Chaque score correspond à l'unique tranche dont l'intervalle le contient. Mentionner que les jointures ne se limitent pas à l'égalité est un moyen rapide de paraître expérimenté.

SELECT s.student, g.grade
FROM scores s
INNER JOIN grades g
  ON s.points >= g.min_points
 AND s.points <= g.max_points;

JOIN explicite ou jointure par virgule

Vous rencontrerez encore l'ancienne syntaxe des jointures par virgule dans du code ancien et dans certaines questions d'entretien. Ces deux requêtes sont équivalentes pour un INNER JOIN.

Préférez la forme explicite JOIN ... ON. La syntaxe par virgule peut facilement être mal saisie et produire accidentellement un produit cartésien (si vous oubliez le WHERE), ce qui est précisément le bug que les recruteurs espèrent repérer.

-- old implicit join
SELECT c.name, o.amount
FROM customers c, orders o
WHERE o.customer_id = c.id;

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

Vérification rapide

Testez l'idée essentielle de la mise en correspondance d'un INNER JOIN.

Récapitulatif : comment INNER JOIN établit les correspondances

Les points à répéter pendant un entretien :

  • INNER JOIN conserve uniquement les paires correspondantes ; les lignes sans correspondance d'un côté ou de l'autre disparaissent.
  • Modèle mental : formez toutes les paires candidates, puis conservez celles pour lesquelles le prédicat ON est vrai.
  • Il est indépendant de l'ordre, et le mot-clé INNER est facultatif.
  • ON peut utiliser des clés composites, des intervalles et des inégalités, et pas seulement un seul =.
  • Utilisez JOIN ... ON explicite avec des alias clairs pour éviter les erreurs de colonne ambiguë et les produits cartésiens accidentels.

Questions Fréquemment Posées

La leçon « Comment INNER JOIN met les lignes en correspondance » est-elle gratuite ?

Oui — le texte complet de « Comment INNER JOIN met les lignes en correspondance » 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 « Comment INNER JOIN met les lignes en correspondance » ?

Le modèle mental d’association des lignes qui simplifie toute question sur les jointures 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 1 sur 4.

Combien de temps prend la leçon « Comment INNER JOIN met les lignes en correspondance » ?

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. Comment INNER JOIN met les lignes en correspondance
  2. ON ou WHERE dans les jointures
  3. Multiplication des lignes lors d’une jointure
  4. Joindre trois tables ou plus
← Retour à Coding Interview Prep