Easy-Micro

ESPACEMEMBRE SQL
Jointures SQL

Les jointures SQL interne, externe et croisée

Les jointures permettent d'extraire des données issues de plusieurs tables qui doivent posséder un champ de valeur identique. Le champ utilisé pour la jointure est souvent la clé primaire. Si nous devons faire une jointure à l'aide d'une colonne autre que celle de la clé primaire, il est recommandé dans la majorité des cas que cette colonne soit indexée.

Formation SQL par Easy-Micro La jointure interne (INNER JOIN)

C'est le type par défaut. Elle permet de renvoyer les enregistrements de la première table qui ont une correspondance avec la deuxième table. Elle permet donc d'afficher des données communes. Il suffit d'utiliser le mot clé JOIN pour réaliser une jointure interne. Jusqu'à présent nous utilisions la virgule qui est une troisième manière d'effectuer une requête INNER JOIN.

Jointures SQL interne

Exemple : Faire le listing des articles par catégorie:
SELECT codearticle, articles.nom, categories.nom
FROM articles, categories
WHERE articles.idcategorie = categories.idcategorie;
Info: INNER JOIN peut être remplacé par le seul mot clé JOIN ou bien par une virgule
Les noms et prénoms des participants regroupés par nom de société
SELECT nom, prenom, nom_societe
FROM formations, liste_nom_societe
WHERE formations.id_societe = liste_nom_societe.id_societe;
Exemple à partir de deux tables; formations (qui possède une clé étrangère) et liste_nom_societe

Formation SQL par Easy-Micro La jointure externe (LEFT JOIN ou RIGHT JOIN)

Elle permet de renvoyer les enregistrements ne répondant pas à la condition de la jointure et qui se verront attribuer la valeur NULL pour certaines colonnes. Le mot clé OUTER est optionnel. Il existe deux types de jointure externe: LEFT ou RIGHT (voir les deux cas du schéma ci-dessus). LEFT JOIN permet d'afficher tous les enregistrements de la table de gauche avec la valeur NULL pour les colonnes n'ayant pas de correspondance dans la table de droite.

Jointures SQL gauche
Jointure LEFT JOIN (jointure gauche)

Lister tous les clients avec leurs commandes:
SELECT nom, prenom, numcommande
FROM clients LEFT JOIN commandes
ON clients.idclient = commandes.idclient;

Même requête mais avec uniquement les clients qui n'ont jamais commandés
SELECT nom, prenom, numcommande
FROM clients LEFT JOIN commandes
ON clients.idclient = commandes.idclient
WHERE numcommande IS NULL;

Formation SQL par Easy-Micro La jointure croisée (CROSS JOIN)

Elle effectue le produit cartésien des tables, c'est à dire que la requête renvoie toutes les combinaisons possibles de lignes entre les deux tables. Une telle requête est rarement utilisée.

Exemple de jointure croisée: afficher tout!
SELECT codearticle, articles.nom, categories.nom
FROM articles CROSS JOIN categories;

< Page précédente SQL Page suivante >