Principe
INNER JOIN ne garde que les lignes présentes dans les deux tables ; LEFT JOIN garde toutes les lignes de la table de gauche ; FULL JOIN garde tout. La condition de jointure porte sur les clés. Une mauvaise jointure duplique les lignes et fausse les sommes.
Comprendre pas à pas
1. La situation
L'analyste veut la liste des articles sans aucun mouvement depuis un an, avec leur stock. Les mouvements sont dans une table, le stock dans une autre, les articles dans une troisième. Sa première requête oublie justement les articles sans mouvement. Question : comment relier plusieurs tables ?
2. Les types de jointures
| Jointure | Résultat |
|---|---|
| INNER JOIN | seulement les lignes présentes dans les deux tables |
| LEFT JOIN | toutes les lignes de la table de gauche, avec les correspondances quand elles existent (sinon NULL) |
| RIGHT JOIN | l'inverse |
| FULL OUTER JOIN | toutes les lignes des deux tables |
3. L'idée
Une jointure relie des tables par une clé commune (code article, numéro de commande). Le type de jointure décide du sort des lignes sans correspondance. Pour trouver ce qui manque (articles sans mouvement, commandes sans livraison), on utilise un LEFT JOIN et on filtre les NULL.
SELECT a.code, s.quantite FROM articles a
JOIN stocks s ON s.code = a.code
LEFT JOIN mouvements m ON m.code = a.code AND m.date >= CURRENT_DATE - INTERVAL '1 year'
WHERE m.code IS NULL AND s.quantite > 0
La syntaxe des dates varie selon la base (SQL Server, Oracle, PostgreSQL…).
4. L'erreur et sa correction
Première requête. INNER JOIN entre articles et mouvements : les articles sans mouvement disparaissent, alors que ce sont eux qu'on cherche.
Correction. LEFT JOIN avec la condition de date dans la jointure, puis filtre sur m.code IS NULL.
Résultat. 412 articles dormants avec stock, valorisés à 380 k€.
Piège. Mettre la condition de date dans le WHERE transformerait le LEFT JOIN en INNER JOIN.
5. À vous de jouer : vos jointures
6. Ce qu'il faut retenir
- Relier les tables par une clé commune.
- LEFT JOIN + IS NULL pour trouver ce qui manque.
- Attention aux doublons et à la position des conditions.
Mise en œuvre
- Acteurs
- Analystes
- Durée
- —
- Livrables
- Usage maîtrisé, gains mesurés
- Identifier les clésEt leur unicité.
- Choisir le type de jointureINNER, LEFT, FULL.
- Contrôler le nombre de lignesAvant et après.
Exemple d'application
LEFT JOIN des articles avec leurs mouvements des 12 derniers mois : les articles sans mouvement apparaissent avec une valeur nulle : c'est la liste des dormants.
Points de vigilance
- Jointure sur une clé non unique : doublons