Comme vous voyez, c'est non seulement très simple de faire des jointures sur plus d'une table, mais c'est également possible
de mélanger jointures internes et externes. Si ça vous pose problème, essayez vraiment de vous imaginer les étapes.
D'abord, on fait la jointure d'Animal et d'Espece. On se retrouve alors avec une grosse table qui possède toutes les colonnes
d'Animal et toutes les colonnes d'Espece. Ensuite, à cette grosse table (à la fois virtuelle et intermédiaire), on joint la table
Race, grâce à la colonne Animal.race_id .
Notez que l'ordre dans lequel vous faites les jointures n'est pas important.
En ce qui concerne la clause ORDER BY, j'ai choisi de trier par ordre alphabétique, mais il est évident que vous pouviez
également trier sur les id de l'espèce et de la race. L'important ici était de trier d'abord sur une colonne d'Espece, ensuite sur
une colonne de Race.
2. Futures génitrices
Vous devez obtenir la liste des chiennes dont on connaît la race, et qui sont en âge de procréer (c'est-à-dire nées avant juillet
2010). Affichez leur nom, date de naissance et race.
Secret (cliquez pour afficher)
Code : SQL
SELECT Animal.nom AS nom_chienne, Animal.date_naissance, Race.nom
AS race
FROM Animal
INNER JOIN Espece
ON Animal.espece_id = Espece.id
INNER JOIN Race
ON Animal.race_id = Race.id
WHERE Espece.nom_courant = 'chien'
AND Animal.date_naissance < '2010-07-01'
AND Animal.sexe = 'F';
Cette fois, il fallait faire une jointure interne avec Race puisqu'on voulait que la race soit connue. Le reste de la requête ne
présentait pas de difficulté majeure.
C/ Et maintenant, le test ultime !
Jointures sur deux tables ou plus, avec éventuelles auto-jointures.
Je vous ai fait rajouter, à la fin du chapitre précédent, deux jolies petites colonnes dans la table Animal : mere_id et pere_id . Le
moment est venu de les utiliser !
1. Mon père, ma mère, mes frères et mes sœurs (Wohooooo)
Vous devez obtenir la liste des chats dont on connaît les parents, ainsi que le nom de ces parents.
Secret (cliquez pour afficher)
Code : SQL
SELECT Animal.nom, Pere.nom AS Papa, Mere.nom AS Maman
FROM Animal
INNER JOIN Animal AS Pere
ON Animal.pere_id = Pere.id
INNER JOIN Animal AS Mere
Partie 2 : Index, jointures et sous-requêtes
110/414
www.openclassrooms.com
Précédent

- 110/413

Suivant