Les jointures SQL expliquées : INNER, LEFT, RIGHT, CROSS (et la jointure avec virgule)

Published: 2026-02-04

Les jointures SQL vous permettent de combiner des lignes de deux tables en fonction de colonnes liées. Ce court tutoriel présente les quatre types de jointures principaux et explique pourquoi la jointure avec virgule est la même chose qu’un 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
Explorer le jeu de données dans DbGate Lite

Essayez les jointures dans votre navigateur

Vous pouvez exécuter les requêtes d’exemple directement sur la page. Modifiez la requête et cliquez sur Run.

INNER JOIN

Ne renvoie que 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)

Renvoie 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)

Renvoie 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 JOIN en LEFT JOIN en inversant l’ordre des tables, pour une meilleure lisibilité et cohérence.

CROSS JOIN

Renvoie le produit cartésien (toutes les combinaisons) des deux tables.

Résultat : 3 × 3 = 9 lignes (chaque employé associé à chaque service).

Jointure avec virgule (syntaxe héritée)

La jointure avec virgule est équivalente à un CROSS JOIN. Elle liste 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 un 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 immédiatement disponibles les champs associés.

Résumé

  • INNER JOIN ne conserve que les lignes correspondantes.
  • LEFT JOIN conserve toutes les lignes de la table de gauche.
  • RIGHT JOIN conserve toutes les lignes de la table de droite.
  • CROSS JOIN renvoie toutes les combinaisons.
  • La jointure avec virgule est équivalente à CROSS JOIN (et avec un filtre WHERE, elle devient un INNER JOIN).