Sous-requêtes corrélées
Peuvent être corrélées à :
A : B, C, D, E, F, G et H
B : aucune
C : D, E, F, G et H
D : F, G et H
E : aucune
Le temps de vous expliquer le fonctionnement de EXISTS et NOT EXISTS, et nous verrons un exemple de sous-requête
corrélée.
Conditions avec EXISTS et NOT EXISTS
Les conditions EXISTS et NOT EXISTS s'utilisent de la manière suivante :
Code : SQL
SELECT * FROM nom_table
WHERE [NOT] EXISTS (sous-requête)
Une condition avec EXISTS sera vraie (et donc la requête renverra quelque chose) si la sous-requête correspondante renvoie
au moins une ligne.
Une condition avec NOT EXISTS sera vraie si la sous-requête correspondante ne renvoie aucune ligne.
Exemple : on sélectionne les races s'il existe un animal qui s'appelle Balou.
Code : SQL
SELECT id, nom, espece_id FROM Race
WHERE EXISTS (SELECT * FROM Animal WHERE nom = 'Balou');
Vu qu'il existe bien un animal du nom de Balou dans notre table Animal, la condition est vraie, on sélectionne donc toutes les
races. Si l'on avait utilisé un nom qui n'existe pas, la requête n'aurait renvoyé aucun résultat.
id
nom
espece_id
1 Berger allemand
1
2 Berger blanc suisse 1
3 Boxer
1
Partie 2 : Index, jointures et sous-requêtes
121/414
www.openclassrooms.com
Peuvent être corrélées à :
A : B, C, D, E, F, G et H
B : aucune
C : D, E, F, G et H
D : F, G et H
E : aucune
Le temps de vous expliquer le fonctionnement de EXISTS et NOT EXISTS, et nous verrons un exemple de sous-requête
corrélée.
Conditions avec EXISTS et NOT EXISTS
Les conditions EXISTS et NOT EXISTS s'utilisent de la manière suivante :
Code : SQL
SELECT * FROM nom_table
WHERE [NOT] EXISTS (sous-requête)
Une condition avec EXISTS sera vraie (et donc la requête renverra quelque chose) si la sous-requête correspondante renvoie
au moins une ligne.
Une condition avec NOT EXISTS sera vraie si la sous-requête correspondante ne renvoie aucune ligne.
Exemple : on sélectionne les races s'il existe un animal qui s'appelle Balou.
Code : SQL
SELECT id, nom, espece_id FROM Race
WHERE EXISTS (SELECT * FROM Animal WHERE nom = 'Balou');
Vu qu'il existe bien un animal du nom de Balou dans notre table Animal, la condition est vraie, on sélectionne donc toutes les
races. Si l'on avait utilisé un nom qui n'existe pas, la requête n'aurait renvoyé aucun résultat.
id
nom
espece_id
1 Berger allemand
1
2 Berger blanc suisse 1
3 Boxer
1
Partie 2 : Index, jointures et sous-requêtes
121/414
www.openclassrooms.com
