SQL INNER JOIN

Dans le langage SQL la commande INNER JOIN, aussi appelée EQUIJOIN, est un type de jointures très communes pour lier plusieurs tables entre-elles. Cette commande retourne les enregistrements lorsqu’il y a au moins une ligne dans chaque colonne qui correspond à la condition.

Intersection de 2 ensembles

Intersection de 2 ensembles

Syntaxe

Pour utiliser ce type de jointure il convient d’utiliser une requête SQL avec cette syntaxe :

SELECT *
FROM table1
INNER JOIN table2 ON table1.id = table2.fk_id

La syntaxe ci-dessus stipule qu’il faut sélectionner les enregistrements des tables table1 et table2 lorsque les données de la colonne “id” de table1 est égal aux données de la colonne fk_id de table2.

La jointure SQL peux aussi être écrite de la façon suivante :

SELECT *
FROM table1
INNER JOIN table2
WHERE table1.id = table2.fk_id

La syntaxe avec la condition WHERE est une manière alternative de faire la jointure mais qui possède l’inconvénient d’être moins facile à lire s’il y a déjà plusieurs conditions dans le WHERE.

Exemple

Imaginons une application qui possède une table utilisateur ainsi qu’une table commande qui contient toutes les commandes effectuées par les utilisateurs.

Table utilisateur :

idprenomnomemailville
1AiméeMarechalaime.marechal@example.comParis
2EsméeLefortesmee.lefort@example.comLyon
3MarinePrevostm.prevost@example.comLille
4LucRollandlucrolland@example.comMarseille

Table commande :

utilisateur_iddate_achatnum_factureprix_total
12013-01-23A00103203.14
12013-02-14A00104124.00
22013-02-17A00105149.45
22013-02-21A00106235.35
52013-03-02A0010747.58

Pour afficher toutes les commandes associées aux utilisateurs, il est possible d’utiliser la requête suivante :

SELECT id, prenom, nom, date_achat, num_facture, prix_total
FROM utilisateur
INNER JOIN commande ON utilisateur.id = commande.utilisateur_id

Résultats :

idprenomnomdate_achatnum_factureprix_total
1AiméeMarechal2013-01-23A00103203.14
1AiméeMarechal2013-02-14A00104124.00
2EsméeLefort2013-02-17A00105149.45
2EsméeLefort2013-02-21A00106235.35

Le résultat de la requête montre parfaite la jointure entre les 2 tables. Les utilisateurs 3 et 4 ne sont pas affichés puisqu’il n’y a pas de commandes associés à ces utilisateurs.

Attention : il est important de noter que si un utilisateur à été supprimé, alors on ne verra pas ses commandes dans la liste puisque INNER JOIN retourne uniquement les résultats ou la condition est vrai dans les 2 tables.

Partager