SELECT Espece.nom_courant AS espece, Animal.nom AS nom_animal,
Race.nom AS race_animal,
Pere.nom AS papa, Race_pere.nom AS race_papa,
Mere.nom AS maman, Race_mere.nom AS race_maman
FROM Animal
INNER JOIN Espece
ON Animal.espece_id = Espece.id
INNER JOIN Race
ON Animal.race_id = Race.id
INNER JOIN Animal AS Pere
ON Animal.pere_id = Pere.id
INNER JOIN Race AS Race_pere
ON Pere.race_id = Race_pere.id
INNER JOIN Animal AS Mere
ON Animal.mere_id = Mere.id
INNER JOIN Race AS Race_mere
ON Mere.race_id = Race_mere.id;
Pfiou
! Le principe est exactement le même que pour avoir le nom des parents. Il suffit de rajouter une jointure avec Race
pour le père, pour la mère, et pour l'enfant, en n'oubliant pas de bien utiliser les alias bien sûr.
C'est avec ce genre de requête que l'on se rend compte à quel point il est important de bien structurer et indenter sa requête,
et à quel point un choix d'alias intelligent peut clarifier les choses.
Si vous avez survécu jusqu'ici, vous devriez maintenant avoir compris en profondeur le principe des jointures, et être capables
de manipuler de nombreuses tables sans faire tout tomber par terre.
En résumé
Une jointure est une opération qui consiste à joindre plusieurs tables ensemble, sur la base d'informations communes.
Lorsque l'on fait une jointure interne, on ne prend que les données pour lesquelles il existe une correspondance entre la
table 1 et la table 2.
Par contre, dans une jointure externe, on récupère toutes les données d'une des deux tables (table 1), plus les données de
la seconde table (table 2) pour lesquelles il existe une correspondance dans la table 1.
On peut joindre une table à elle-même. Cela s'appelle une auto-jointure.
Partie 2 : Index, jointures et sous-requêtes
112/414
www.openclassrooms.com
Race.nom AS race_animal,
Pere.nom AS papa, Race_pere.nom AS race_papa,
Mere.nom AS maman, Race_mere.nom AS race_maman
FROM Animal
INNER JOIN Espece
ON Animal.espece_id = Espece.id
INNER JOIN Race
ON Animal.race_id = Race.id
INNER JOIN Animal AS Pere
ON Animal.pere_id = Pere.id
INNER JOIN Race AS Race_pere
ON Pere.race_id = Race_pere.id
INNER JOIN Animal AS Mere
ON Animal.mere_id = Mere.id
INNER JOIN Race AS Race_mere
ON Mere.race_id = Race_mere.id;
Pfiou
! Le principe est exactement le même que pour avoir le nom des parents. Il suffit de rajouter une jointure avec Race
pour le père, pour la mère, et pour l'enfant, en n'oubliant pas de bien utiliser les alias bien sûr.
C'est avec ce genre de requête que l'on se rend compte à quel point il est important de bien structurer et indenter sa requête,
et à quel point un choix d'alias intelligent peut clarifier les choses.
Si vous avez survécu jusqu'ici, vous devriez maintenant avoir compris en profondeur le principe des jointures, et être capables
de manipuler de nombreuses tables sans faire tout tomber par terre.
En résumé
Une jointure est une opération qui consiste à joindre plusieurs tables ensemble, sur la base d'informations communes.
Lorsque l'on fait une jointure interne, on ne prend que les données pour lesquelles il existe une correspondance entre la
table 1 et la table 2.
Par contre, dans une jointure externe, on récupère toutes les données d'une des deux tables (table 1), plus les données de
la seconde table (table 2) pour lesquelles il existe une correspondance dans la table 1.
On peut joindre une table à elle-même. Cela s'appelle une auto-jointure.
Partie 2 : Index, jointures et sous-requêtes
112/414
www.openclassrooms.com
