Code : SQL
SELECT id
FROM Espece
WHERE nom_courant = ANY ('Tortue d''Hermann', 'Perroquet amazone');
Code : Console
#1064 - You have an error in your SQL syntax;
Sous-requêtes corrélées
Une sous-requête corrélée est une sous-requête qui fait référence à une colonne (ou une table) qui n'est pas définie dans sa
clause FROM, mais bien ailleurs dans la requête dont elle fait partie.
Vu que ce n'est pas une définition extrêmement claire de prime abord, voici un exemple de requête avec une sous-requête corrélée
:
Code : SQL
SELECT colonne1
FROM tableA
WHERE colonne2 IN (
SELECT colonne3
FROM tableB
WHERE tableB.colonne4 = tableA.colonne5
);
Si l'on prend la sous-requête toute seule, on ne pourra pas l'exécuter :
Code : SQL
SELECT colonne3
FROM tableB
WHERE tableB.colonne4 = tableA.colonne5
En effet, seule la tableB est sélectionnée dans la clause FROM, il n'y a pas de jointure avec la tableA, et pourtant on utilise la
tableA dans la condition.
Par contre, aucun problème pour l'utiliser comme sous-requête, puisque la clause FROM de la requête principale sélectionne la
tableA. La sous-requête est donc corrélée à la requête principale.
Attention : si MySQL rencontre une table inconnue dans une sous-requête, elle va aller chercher dans les niveaux supérieurs
uniquement si cette table existe. Donc, imaginons que l'on a une requête avec 3 niveaux : la requête principale (niveau 1), une ou
plusieurs sous-requêtes (niveau 2) et une ou plusieurs sous-sous-requêtes, c'est-à-dire une sous-requête dans une sous-requête
(niveau 3).
Une sous-requête (niveau 2) peut être corrélée à la requête principale (niveau 1).
Une sous-sous-requête (niveau 3) peut être corrélée à la sous-requête dont elle dépend (niveau 2), ou à la requête
principale (niveau 1).
Mais une sous-requête (niveau 2) ne peut pas être corrélée à une autre sous-requête (niveau 2).
Si l'on prend le schéma suivant, on peut donc remonter l'arbre, mais jamais descendre d'un cran pour trouver les tables
nécessaires.
Partie 2 : Index, jointures et sous-requêtes
120/414
www.openclassrooms.com
Précédent

- 120/413

Suivant