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.

Pour réaliser de nouvelles jointures nous allons créer une dernière table. 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.

Il existe trois types de jointure:

• La jointure interne (INNER JOIN)
C'est le type par defaut. 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 (voir premier cas du schéma ci-dessous). Il suffit d'utiliser le mot clé JOIN pour réaliser une jointure interne. Jusqu'a 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:
Info: INNER JOIN peut être remplacé par le seul mot clé JOIN ou bien par une virgule
SELECT codearticle, articles.nom, categories.nom
FROM articles INNER JOIN categories
WHERE articles.idcategorie = categories.idcategorie;

• La jointure externe (OUTER JOIN: 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)

Les noms et prénoms des clients n'ayant jamais commandés:
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;

Jointures SQL gauche
Jointure RIGHT JOIN (jointure droite)

• La jointure croisée (CROSS JOIN)
Elle effectue le produit cartésien des tables, c'est à dire que la requette 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;


Suivez les aventures des skippers aquitains sur EasyVoile.com
Flux RSS Easy-Micro - Abonnez-vous Easy-Micro [ François Bisch ]
Vendredi 18 janvier 2019 - Semaine 03 - Sainte Prisca (Demain: Saint Marius)
Aujourd'hui, c'est l'anniversaire de Philippe Starck (1949-70 ans), créateur et décorateur d'intérieur français. Autre 18 janvier: 2016 - Décès de Glenn Frey le chanteur fondateur du groupe californien Eagles.
Haut de page Easy-Micro