Les jointures SQL expliquées : INNER, LEFT, RIGHT, CROSS (et la jointure par virgule)
Published: 2026-02-04
Les jointures SQL vous permettent de combiner des lignes provenant de deux tables sur la base de colonnes liées. Ce court tutoriel présente les quatre types de jointures principaux et explique pourquoi la jointure par virgule est la même chose qu’une CROSS JOIN.
Données d’exemple
Nous utilisons deux tables dans tous les exemples :
Table employees :
| id | name | dept_id |
|---|---|---|
| 1 | Ava | 10 |
| 2 | Ben | 20 |
| 3 | Cara | NULL |
Table departments :
| dept_id | dept_name |
|---|---|
| 10 | Sales |
| 20 | Engineering |
| 30 | Support |
Essayez les jointures dans votre navigateur
Vous pouvez exécuter les requêtes d’exemple directement dans la page. Modifiez la requête et cliquez sur Run.
INNER JOIN
Retourne uniquement les lignes qui correspondent dans les deux tables.
Résultat : Ava/Sales, Ben/Engineering. Cara est exclue car elle n’a pas de service correspondant, et Support est exclu car il n’y a aucun employé dans le service 30.
LEFT JOIN (LEFT OUTER JOIN)
Retourne toutes les lignes de la table de gauche, plus les lignes correspondantes de la table de droite. Les lignes non correspondantes du côté droit deviennent NULL.
Résultat : Ava/Sales, Ben/Engineering, Cara/NULL. Tous les employés sont conservés.
RIGHT JOIN (RIGHT OUTER JOIN)
Retourne toutes les lignes de la table de droite, plus les lignes correspondantes de la table de gauche. Les lignes non correspondantes du côté gauche deviennent NULL.
Résultat : Ava/Sales, Ben/Engineering, NULL/Support. Tous les services sont conservés.
Remarque : de nombreux développeurs préfèrent réécrire
RIGHT JOINenLEFT JOINen inversant l’ordre des tables, pour une meilleure lisibilité et cohérence.
CROSS JOIN
Retourne le produit cartésien (toutes les combinaisons) des deux tables.
Résultat : 3 × 3 = 9 lignes (chaque employé associé à chaque service).
Jointure par virgule (syntaxe héritée)
La jointure par virgule est identique à une CROSS JOIN. Elle énumère les tables séparées par des virgules dans la clause FROM :
Cela produit le même produit cartésien que CROSS JOIN. Si vous ajoutez un filtre dans la clause WHERE, elle se comporte comme une INNER JOIN :
Bien que toujours valide, la syntaxe avec virgule est considérée comme dépassée, car elle mélange la logique de jointure avec les filtres et peut être plus difficile à lire. Il est préférable d’utiliser la syntaxe explicite JOIN ... ON.
DbGate : LEFT JOIN automatiques lors du dépliage des colonnes
Dans le navigateur de données de DbGate, le dépliage d’une colonne de clé étrangère génère automatiquement une requête avec un LEFT JOIN pour récupérer les données liées sans supprimer de lignes de la table principale. Cela permet de garder votre jeu de données de base intact tout en rendant les champs liés immédiatement disponibles.
Résumé
INNER JOINne conserve que les lignes correspondantes.LEFT JOINconserve toutes les lignes de la table de gauche.RIGHT JOINconserve toutes les lignes de la table de droite.CROSS JOINretourne toutes les combinaisons.- La jointure par virgule est identique à
CROSS JOIN(et avec un filtreWHERE, elle devient uneINNER JOIN).