Effectuer une sous-requête consiste à effectuer une requête à
l'intérieur d'une autre, ou en d'autres termes d'utiliser une requête
afin d'en réaliser une autre (on entend parfois le terme de requêtes en cascade).
Une sous-requête doit être placée à la suite d'une clause
WHERE ou HAVING, et doit remplacer une constante ou un groupe de constantes
qui permettraient en temps normal d'exprimer la qualification.
lorsque la sous-requête remplace une constante utilisée avec des
opérateurs classiques, elle doit obligatoirement renvoyer une seule réponse
(une table d'une ligne et une colonne). Par exemple :
SELECT ---- FROM ----
WHERE ---- < (SELECT ---- FROM ----)
lorsque la sous-requête remplace une constante utilisée dans une expression
mettant en jeu les opérateurs IN, EXISTS, ALL ou ANY, elle doit obligatoirement renvoyer
une seule ligne.
SELECT ---- FROM ----
WHERE ---- IN (SELECT ---- FROM ----)
Soit la table suivante :
Table Occaz
Marque
Modele
Serie
Numero
Compteur
Renault
18
RL
4698 SJ 45
123450
Renault
Kangoo
RL
4568 HD 16
56000
Renault
Kangoo
RL
6576 VE 38
12000
Peugeot
106
KID
7845 ZS 83
75600
Peugeot
309
chorus
7647 ABY 82
189500
Fiat
Punto
GTI
8941 UD 61
80232
Audi
A4
Quattro
7846 AZS 75
21350
La sélection des voitures dont le compteur est inférieur à la moyenne se fait par l'instruction :
SELECT * FROM OCCAZ
WHERE Compteur < (SELECT AVG(Compteur) FROM OCCAZ)