Zara
Maine coon
Zonko
Maine coon
Boucan
Singapura
Boule
Singapura
Fiero
Singapura
NULL
Sphynx
On a bien une ligne avec la race "Sphynx", bien que nous n'ayons aucun sphynx dans notre table Animal.
À noter que toutes les jointures par la droite peuvent être faites grâce à une jointure par la gauche (et vice versa). Voici
l'équivalent avec une jointure par la gauche de la requête que nous venons d'écrire :
Code : SQL
SELECT Animal.nom AS nom_animal, Race.nom AS race
FROM Race
-- Table de
gauche
LEFT JOIN Animal
-- Table de
droite
ON Animal.race_id = Race.id
WHERE Race.espece_id = 2
ORDER BY Race.nom, Animal.nom;
Syntaxes alternatives
Les syntaxes que je vous ai montrées jusqu'ici, avec [INNER] JOIN et LEFT|RIGHT [OUTER] JOIN, sont les syntaxes
classiques que vous retrouverez le plus souvent. Il existe cependant d'autres manières de faire des jointures.
Jointures avec USING
Lorsque les colonnes qui servent à joindre les deux tables ont le même nom, vous pouvez utiliser la clause USING au lieu de la
clause ON.
Code : SQL
SELECT *
FROM table1
[INNER | LEFT | RIGHT] JOIN table2 USING (colonneJ); -- colonneJ
est présente dans les deux tables
-- équivalent à
SELECT *
FROM table1
[INNER | LEFT | RIGHT] JOIN table2 ON Table1.colonneJ =
table2.colonneJ;
Si la jointure se fait sur plusieurs colonnes, il suffit de lister les colonnes en les séparant par des virgules : USING
(colonne1, colonne2,…)
Jointures naturelles
Comme pour les jointures avec USING, il est possible d'utiliser les jointures naturelles dans le cas où les colonnes servant à la
jointure ont le même nom dans les deux tables.
Simplement, dans le cas d'une jointure naturelle, on ne donne pas la (les) colonne(s) sur laquelle (lesquelles) joindre les tables :
c'est déterminé automatiquement. Donc si on a les trois tables suivantes :
Partie 2 : Index, jointures et sous-requêtes
106/414
www.openclassrooms.com
Maine coon
Zonko
Maine coon
Boucan
Singapura
Boule
Singapura
Fiero
Singapura
NULL
Sphynx
On a bien une ligne avec la race "Sphynx", bien que nous n'ayons aucun sphynx dans notre table Animal.
À noter que toutes les jointures par la droite peuvent être faites grâce à une jointure par la gauche (et vice versa). Voici
l'équivalent avec une jointure par la gauche de la requête que nous venons d'écrire :
Code : SQL
SELECT Animal.nom AS nom_animal, Race.nom AS race
FROM Race
-- Table de
gauche
LEFT JOIN Animal
-- Table de
droite
ON Animal.race_id = Race.id
WHERE Race.espece_id = 2
ORDER BY Race.nom, Animal.nom;
Syntaxes alternatives
Les syntaxes que je vous ai montrées jusqu'ici, avec [INNER] JOIN et LEFT|RIGHT [OUTER] JOIN, sont les syntaxes
classiques que vous retrouverez le plus souvent. Il existe cependant d'autres manières de faire des jointures.
Jointures avec USING
Lorsque les colonnes qui servent à joindre les deux tables ont le même nom, vous pouvez utiliser la clause USING au lieu de la
clause ON.
Code : SQL
SELECT *
FROM table1
[INNER | LEFT | RIGHT] JOIN table2 USING (colonneJ); -- colonneJ
est présente dans les deux tables
-- équivalent à
SELECT *
FROM table1
[INNER | LEFT | RIGHT] JOIN table2 ON Table1.colonneJ =
table2.colonneJ;
Si la jointure se fait sur plusieurs colonnes, il suffit de lister les colonnes en les séparant par des virgules : USING
(colonne1, colonne2,…)
Jointures naturelles
Comme pour les jointures avec USING, il est possible d'utiliser les jointures naturelles dans le cas où les colonnes servant à la
jointure ont le même nom dans les deux tables.
Simplement, dans le cas d'une jointure naturelle, on ne donne pas la (les) colonne(s) sur laquelle (lesquelles) joindre les tables :
c'est déterminé automatiquement. Donc si on a les trois tables suivantes :
Partie 2 : Index, jointures et sous-requêtes
106/414
www.openclassrooms.com
