You are on page 1of 19

z

Jointure SQL
z

Les jointures en SQL permettent d’associer


plusieurs tables dans une même requête. Cela
permet d’exploiter la puissance des bases de
données relationnelles pour obtenir des résultats
qui combinent les données de plusieurs tables de
manière efficace.
z
INNER JOIN
z
jointure interne pour retourner les enregistrements quand la condition est
vrai dans les 2 tables. C’est l’une des jointures les plus communes.

SELECT * FROM A INNER JOIN B ON A.key = B.key


z

SELECT * FROM post


INNER JOIN category ON post.category_id = category.category_id;
LEFT JOIN
z
jointure externe pour retourner tous les enregistrements de la table de gauche (LEFT =
gauche) même si la condition n’est pas vérifié dans l’autre table.

SELECT * FROM A LEFT JOIN B ON A.key = B.key


SELECT *FROM post AS p
z LEFT JOIN category AS c ON p.category_id = c.category_id;
z
LEFT JOIN (sans l’intersection de B)

Jointure gauche (LEFT JOINT sans l’intersection B)

SELECT * FROM A LEFT JOIN B ON A.key = B.key WHERE B.key IS NULL


RIGHT JOIN
z

jointure externe pour retourner tous les enregistrements de la table de droite (RIGHT =
droite) même si la condition n’est pas vérifié dans l’autre table.

Jointure droite (RIGHT JOINT)

SELECT * FROM A RIGHT JOIN B ON A.key = B.key


SELECT * FROM post AS p
RIGHT JOIN category AS c ON p.category_id = c.category_id;
z
z RIGHT JOIN (sans l’intersection de A)

Jointure droite (RIGHT JOINT sans l’intersection A)

SELECT * FROM A RIGHT JOIN B ON A.key = B.key WHERE B.key IS NULL


FULL JOIN
z

jointure externe pour retourner les résultats quand la condition est vrai dans au moins une
des 2 tables.

Union de 2 ensembles

SELECT * FROM A FULL JOIN B ON A.key = B.key


(SELECT *FROM post AS p
LEFT JOIN category AS c ON p.category_id = c.category_id)
z UNION
(SELECT *FROM post AS p
RIGHT JOIN category AS c ON p.category_id = c.category_id);
CROSS JOIN
z

jointure croisée permettant de faire le produit cartésien de 2 tables. En d’autres mots,


permet de joindre chaque lignes d’une table avec chaque lignes d’une seconde table.
Attention, le nombre de résultats est en général très élevé.

SELECT * FROM table1 CROSS JOIN table2

Exemple
une application de recettes de
cuisines qui contient 2 tables
d’ingrédients, la table legume et la
table fruit.
Pour une raison quelconque l’application doit associer tous les légumes avec tous
les fruits. Toutes les combinaisons doivent être affichées. Pour cela il convient
z d’effectuer l’une ou l’autre des requêtes suivantes:

SELECT l_id, l_nom_fr_fr, f_id, f_nom_fr_fr FROM legume CROSS JOIN fruit

Le résultat montre bien que chaque légume est associé à chaque fruit. Avec 3 fruits et 3 légumes, il
y a donc 9 lignes de résultats (3 x3 = 9).
SQL SELF JOIN
z

En SQL, un SELF JOIN correspond à une jointure d’une table avec elle-même. Ce type
de requête n’est pas si commun mais très pratique dans le cas où une table lie des
informations avec des enregistrements de la même table.

SELECT `t1`.`nom_colonne1`, `t1`.`nom_colonne2`, `t2`.`nom_colonne1`, `t2`.`nom_colonne2`


FROM `table` as `t1`
LEFT OUTER JOIN `table` as `t2` ON `t2`.`fk_id` = `t1`.`id`
SQL NATURAL JOIN
z
Dans le langage SQL, la commande NATURAL JOIN permet de faire une jointure naturelle
entre 2 tables. Cette jointure s’effectue à la condition qu’il y ai des colonnes du même nom
et de même type dans les 2 tables. Le résultat d’une jointure naturelle est la création d’un
tableau avec autant de lignes qu’il y a de paires correspondant à l’association des
colonnes de même nom.

SELECT *

FROM table1

NATURAL JOIN table2

L’avantage d’un NATURAL JOIN c’est qu’il n’y a pas besoin d’utiliser la clause ON.
z

SELECT *
FROM utilisateur
NATURAL JOIN pays
z

Cet exemple montre qu’il y a bien eu une jointure entre les 2 tables grâce à la
colonne “pays_id” qui se trouve dans l’une et l’autre des tables.

You might also like