1 / 6 INNER JOINLignes présentes des deux côtés
Ne garde que les lignes qui ont une correspondance dans les deux tables. Les clients sans commande disparaissent du résultat.
clients id nom 1 Alice 2 Bruno 3 Chloé
commandes n° client_id montant 101 1 120 € 102 1 80 € 103 3 45 € 104 4 60 €
Résultat · 3 lignes nom n° montant Alice 101 120 € Alice 102 80 € Chloé 103 45 €
Exemple Copier
SELECT c.nom, o.id_commande
FROM clients c
INNER JOIN commandes o ON o.id_client = c.id_client;2 / 6 LEFT JOINToute la gauche, complétée à droite
Garde toutes les lignes de la table de gauche ; les colonnes de droite valent NULL quand il n’y a pas de correspondance.
clients id nom 1 Alice 2 Bruno 3 Chloé
commandes n° client_id montant 101 1 120 € 102 1 80 € 103 3 45 € 104 4 60 €
Résultat · 4 lignes nom n° montant Alice 101 120 € Alice 102 80 € Bruno NULL NULL Chloé 103 45 €
Exemple Copier
SELECT c.nom, o.id_commande
FROM clients c
LEFT JOIN commandes o ON o.id_client = c.id_client;3 / 6 RIGHT JOINToute la droite, complétée à gauche
Symétrique du LEFT JOIN. Rarement utilisée : on préfère inverser l’ordre des tables et écrire un LEFT JOIN, plus lisible.
clients id nom 1 Alice 2 Bruno 3 Chloé
commandes n° client_id montant 101 1 120 € 102 1 80 € 103 3 45 € 104 4 60 €
Résultat · 4 lignes nom n° montant Alice 101 120 € Alice 102 80 € Chloé 103 45 € NULL 104 60 €
Exemple Copier
SELECT c.nom, o.id_commande
FROM clients c
RIGHT JOIN commandes o ON o.id_client = c.id_client;4 / 6 FULL OUTER JOINToutes les lignes des deux tables
Garde tout, avec des NULL de part et d’autre en l’absence de correspondance. Idéale pour rapprocher deux sources. Non disponible en MySQL.
clients id nom 1 Alice 2 Bruno 3 Chloé
commandes n° client_id montant 101 1 120 € 102 1 80 € 103 3 45 € 104 4 60 €
Résultat · 5 lignes nom n° montant Alice 101 120 € Alice 102 80 € Bruno NULL NULL Chloé 103 45 € NULL 104 60 €
Exemple Copier
SELECT COALESCE(a.id, b.id) AS id
FROM source_a a
FULL OUTER JOIN source_b b ON b.id = a.id;5 / 6 LEFT JOIN … IS NULLLignes de gauche sans correspondance
Un LEFT JOIN filtré sur une clé de droite NULL renvoie les lignes orphelines (anti-jointure). NOT EXISTS donne le même résultat.
clients id nom 1 Alice 2 Bruno 3 Chloé
commandes n° client_id montant 101 1 120 € 102 1 80 € 103 3 45 € 104 4 60 €
Résultat · 1 ligne nom n° montant Bruno NULL NULL
Exemple Copier
SELECT c.nom
FROM clients c
LEFT JOIN commandes o ON o.id_client = c.id_client
WHERE o.id_client IS NULL;6 / 6 CROSS JOINToutes les combinaisons possibles
Produit cartésien : chaque ligne de A avec chaque ligne de B. Utile pour générer une grille complète, dangereux sur de grandes tables.
clients id nom 1 Alice 2 Bruno 3 Chloé
commandes n° client_id montant 101 1 120 € 102 1 80 € 103 3 45 € 104 4 60 €
Résultat · 6 lignes nom n° montant Alice 101 120 € Alice 102 80 € Bruno 101 120 € Bruno 102 80 € Chloé 101 120 € Chloé 102 80 €
Extrait : 3 clients × 2 premières commandes = 6 lignes (12 au total).
Exemple Copier
SELECT m.mois, p.produit
FROM mois m
CROSS JOIN produits p;