Introduction aux jointures SQL
Les jointures SQL permettent de combiner des lignes de deux ou plusieurs tables en fonction d'une colonne liée entre elles. Elles sont essentielles pour interroger des bases de données relationnelles. Voici les principaux types de jointures avec des exemples.
- Jointure externe gauche (LEFT JOIN)
La jointure externe gauche retourne toutes les lignes de la table de gauche et les lignes correspondantes de la table de droite. S'il n'y a pas de correspondance, les colonnes de la table de droite contiennent NULL.
SELECT * FROM clients LEFT JOIN commandes ON clients.id_client = commandes.id_client
Remarque : Cette requête affiche tous les clients, même ceux sans commande, avec les détails de commande ou NULL si absent.
- Jointure externe droite (RIGHT JOIN)
La jointure externe droite retourne toutes les lignes de la table de droite et les lignes correspondantes de la table de gauche. Sans correspondance, les colonnes de la table de gauche sont NULL.
SELECT * FROM produits RIGHT JOIN categories ON produits.id_categorie = categories.id_categorie
Remarque : Cela inclut toutes les catégories, même celles sans produits associés.
- Jointure complète (FULL JOIN)
La jointure complète retourne toutes les lignes des deux tables, avec NULL pour les colonnes non correspondantes. Dans certaines bases de données comme MySQL 5.5, FULL JOIN n'est pas supporté ; on peut l'émuler avec UNION.
SELECT * FROM employes LEFT JOIN projets ON employes.id_projet = projets.id_projet
UNION
SELECT * FROM employes RIGHT JOIN projets ON employes.id_projet = projets.id_projet
Remarque : Cela combine les résultats des jointures gauche et droite pour obtenir l'effet d'une jointure complète.
- Jointure interne (INNER JOIN)
La jointure interne retourne uniquement les lignes ayant une correspondance dans les deux tables.
SELECT * FROM fournisseurs INNER JOIN produits ON fournisseurs.id_fournisseur = produits.id_fournisseur
Équivalences possibles :
SELECT f.*, p.* FROM fournisseurs f, produits p WHERE f.id_fournisseur = p.id_fournisseurSELECT * FROM fournisseurs CROSS JOIN produits WHERE fournisseurs.id_fournisseur = produits.id_fournisseur(note : CROSS JOIN avec condition nécessite WHERE)
- Jointure croisée (CROSS JOIN)
La jointure croisée produit le produit cartésien des deux tables, retournant toutes les combinaisons possibles de lignes.
SELECT * FROM villes CROSS JOIN langues
Équivalence simple : SELECT * FROM villes, langues
Cela génère autant de lignes que le produit du nombre de lignes dans chaque table.