Je vous déconseille cependant d'utiliser cette syntaxe. En effet, lorsque vous ferez des grosses jointures, avec plusieurs
conditions dans la clause WHERE, vous serez bien contents de pouvoir différencier au premier coup d’œil les conditions de
jointures des conditions "normales".
Exemples d'application et exercices
Maintenant que vous savez comment faire une jointure, on va un peu s'amuser. Cette partie sera en fait un mini-TP. Je vous dis à
quel résultat vous devez parvenir en utilisant des jointures, vous essayez, et ensuite, vous allez voir la réponse et les
explications.
Techniquement, vous avez vu toute la théorie nécessaire pour réaliser toutes les requêtes que je vous demanderai ici.
Cependant, il y aura des choses que je ne vous ai pas "montrées" explicitement, comme les jointures avec plus de deux tables, ou
les auto-jointures (joindre une table avec elle-même).
C'est voulu !
Je ne m'attends pas à ce que vous réussissiez à construire toutes les requêtes sans jeter un œil à la solution. Le but ici est de
vous faire réfléchir, et surtout de vous faire prendre conscience qu'on peut faire pas mal de chose en SQL, en combinant
plusieurs techniques par exemple.
Si un jour vous vous dites "Tiens, ce serait bien si en SQL on pouvait…", arrêtez de vous le dire et faites-le, simplement ! Vous
serez probablement plus souvent limités par votre imagination que par SQL.
Bien, ça c'est dit, donc allons-y !
Pour jouer le jeu jusqu'au bout, je vous propose de considérer que vous ne connaissez pas les id correspondants aux
différentes races et espèces. Donc quand je demande la liste des chiens par exemple, il n'est pas intéressant de
sélectionner les animaux WHERE espece_id = 1 ; il est bien plus utile de faire une jointure avec la table Espece.
A/ Commençons par des choses faciles
Des jointures sur deux tables, avec différentes conditions à respecter.
1. Moi, j'aime bien les chiens de berger
Vous devez obtenir la liste des races de chiens qui sont des chiens de berger.
On considère (même si ce n'est pas tout à fait vrai) que les chiens de berger ont "berger" dans leur nom de race.
Secret (cliquez pour afficher)
Code : SQL
SELECT Race.nom AS Race
FROM Race
INNER JOIN Espece ON Espece.id = Race.espece_id
WHERE Espece.nom_courant = 'chien' AND Race.nom LIKE '%berger%';
Bon, c'était juste un échauffement. Normalement vous ne devriez pas avoir eu de difficultés avec cette requête. Peut-être
avez-vous oublié la condition Espece.nom_courant = 'chien' ? On ne sait jamais, une race de chat (ou autre)
pourrait très bien contenir "berger", or j'ai explicitement demandé les chiens.
2. Mais de quelle couleur peut bien être son pelage ?
Vous devez obtenir la liste des animaux (leur nom, date de naissance et race) pour lesquels nous n'avons aucune information
sur la couleur que devrait avoir leur pelage.
Dans la description des races, j'utilise parfois "pelage", parfois "poils", et parfois "robe".
Partie 2 : Index, jointures et sous-requêtes
108/414
www.openclassrooms.com
conditions dans la clause WHERE, vous serez bien contents de pouvoir différencier au premier coup d’œil les conditions de
jointures des conditions "normales".
Exemples d'application et exercices
Maintenant que vous savez comment faire une jointure, on va un peu s'amuser. Cette partie sera en fait un mini-TP. Je vous dis à
quel résultat vous devez parvenir en utilisant des jointures, vous essayez, et ensuite, vous allez voir la réponse et les
explications.
Techniquement, vous avez vu toute la théorie nécessaire pour réaliser toutes les requêtes que je vous demanderai ici.
Cependant, il y aura des choses que je ne vous ai pas "montrées" explicitement, comme les jointures avec plus de deux tables, ou
les auto-jointures (joindre une table avec elle-même).
C'est voulu !
Je ne m'attends pas à ce que vous réussissiez à construire toutes les requêtes sans jeter un œil à la solution. Le but ici est de
vous faire réfléchir, et surtout de vous faire prendre conscience qu'on peut faire pas mal de chose en SQL, en combinant
plusieurs techniques par exemple.
Si un jour vous vous dites "Tiens, ce serait bien si en SQL on pouvait…", arrêtez de vous le dire et faites-le, simplement ! Vous
serez probablement plus souvent limités par votre imagination que par SQL.
Bien, ça c'est dit, donc allons-y !
Pour jouer le jeu jusqu'au bout, je vous propose de considérer que vous ne connaissez pas les id correspondants aux
différentes races et espèces. Donc quand je demande la liste des chiens par exemple, il n'est pas intéressant de
sélectionner les animaux WHERE espece_id = 1 ; il est bien plus utile de faire une jointure avec la table Espece.
A/ Commençons par des choses faciles
Des jointures sur deux tables, avec différentes conditions à respecter.
1. Moi, j'aime bien les chiens de berger
Vous devez obtenir la liste des races de chiens qui sont des chiens de berger.
On considère (même si ce n'est pas tout à fait vrai) que les chiens de berger ont "berger" dans leur nom de race.
Secret (cliquez pour afficher)
Code : SQL
SELECT Race.nom AS Race
FROM Race
INNER JOIN Espece ON Espece.id = Race.espece_id
WHERE Espece.nom_courant = 'chien' AND Race.nom LIKE '%berger%';
Bon, c'était juste un échauffement. Normalement vous ne devriez pas avoir eu de difficultés avec cette requête. Peut-être
avez-vous oublié la condition Espece.nom_courant = 'chien' ? On ne sait jamais, une race de chat (ou autre)
pourrait très bien contenir "berger", or j'ai explicitement demandé les chiens.
2. Mais de quelle couleur peut bien être son pelage ?
Vous devez obtenir la liste des animaux (leur nom, date de naissance et race) pour lesquels nous n'avons aucune information
sur la couleur que devrait avoir leur pelage.
Dans la description des races, j'utilise parfois "pelage", parfois "poils", et parfois "robe".
Partie 2 : Index, jointures et sous-requêtes
108/414
www.openclassrooms.com
