4 Bleu russe
2
5 Maine coon
2
6 Singapura
2
7 Sphynx
2
8 Nebelung
2
Vous conviendrez cependant qu'une telle requête n'a pas beaucoup de sens, c'était juste pour vous faire comprendre le principe.
En général, on utilise WHERE [NOT] EXISTS avec des sous-requêtes corrélées.
Exemple : je veux sélectionner toutes les races dont on ne possède aucun animal.
Code : SQL
SELECT * FROM Race
WHERE NOT EXISTS (SELECT * FROM Animal WHERE Animal.race_id =
Race.id);
La sous-requête est bien corrélée à la requête principale, puisqu'elle utilise la table Race, qui n'est pas sélectionnée dans la sousrequête.
En résultat, on a bien le Sphynx, puisqu'on n'en possède aucun.
id nom espece_id
description
7 Sphynx 2
Chat sans poils.
En résumé
Une sous-requête est une requête imbriquée dans une autre requête.
Il est obligatoire de donner un alias au résultat d'une sous-requête lorsqu'on l'utilise dans une clause FROM.
IN, ANY, SOME et ALL s'utilisent uniquement avec des sous-requêtes renvoyant une seule colonne.
Une sous-requête corrélée est une sous-requête utilisant une table référencée uniquement dans la requête dont elle
dépend, et non dans la sous-requête elle-même.
EXISTS renvoie vrai si la sous-requête qui y est associée renvoie au moins un résultat.
Partie 2 : Index, jointures et sous-requêtes
122/414
www.openclassrooms.com
2
5 Maine coon
2
6 Singapura
2
7 Sphynx
2
8 Nebelung
2
Vous conviendrez cependant qu'une telle requête n'a pas beaucoup de sens, c'était juste pour vous faire comprendre le principe.
En général, on utilise WHERE [NOT] EXISTS avec des sous-requêtes corrélées.
Exemple : je veux sélectionner toutes les races dont on ne possède aucun animal.
Code : SQL
SELECT * FROM Race
WHERE NOT EXISTS (SELECT * FROM Animal WHERE Animal.race_id =
Race.id);
La sous-requête est bien corrélée à la requête principale, puisqu'elle utilise la table Race, qui n'est pas sélectionnée dans la sousrequête.
En résultat, on a bien le Sphynx, puisqu'on n'en possède aucun.
id nom espece_id
description
7 Sphynx 2
Chat sans poils.
En résumé
Une sous-requête est une requête imbriquée dans une autre requête.
Il est obligatoire de donner un alias au résultat d'une sous-requête lorsqu'on l'utilise dans une clause FROM.
IN, ANY, SOME et ALL s'utilisent uniquement avec des sous-requêtes renvoyant une seule colonne.
Une sous-requête corrélée est une sous-requête utilisant une table référencée uniquement dans la requête dont elle
dépend, et non dans la sous-requête elle-même.
EXISTS renvoie vrai si la sous-requête qui y est associée renvoie au moins un résultat.
Partie 2 : Index, jointures et sous-requêtes
122/414
www.openclassrooms.com
