Une JOIN combine les lignes de deux tables en faisant correspondre une condition, généralement une clé étrangère. Le type de jointure détermine ce qui arrive aux lignes qui n'ont aucune correspondance de l'autre côté.
Une JOIN combine les lignes de deux tables en faisant correspondre une condition, généralement une clé étrangère. Le type de jointure détermine ce qui arrive aux lignes qui n'ont aucune correspondance de l'autre côté.
NULL.-- customers(id, name) orders(id, customer_id, total)
-- INNER : uniquement les clients qui ont au moins une commande
SELECT c.name, o.total
FROM customers c
INNER JOIN orders o ON o.customer_id = c.id;
-- LEFT : chaque client, même ceux sans aucune commande (total = NULL)
SELECT c.name, o.total
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id;
-- Usage classique : trouver les clients SANS commande
SELECT c.name
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
WHERE o.id IS NULL; -- le côté NULL du LEFT JOIN révèle le manque
WHERE (par ex. WHERE o.total > 100) transforme silencieusement un LEFT JOIN en INNER JOIN, car NULL > 100 est faux. Placez ce genre de conditions dans la clause ON si vous voulez conserver les lignes sans correspondance.La plupart des requêtes réelles s'étendent sur plusieurs tables, et le mauvais type de jointure supprime ou duplique discrètement des lignes — un bug qui renvoie des résultats plausibles. Savoir que LEFT JOIN + IS NULL trouve les lignes "manquantes", et qu'un WHERE sur le côté null annule le LEFT, prévient toute une catégorie d'erreurs de reporting.
Une bibliothèque de questions d'entretien IT avec des réponses détaillées — du Junior au Senior.
Faire un don