3
Systèmes de
Gestion de
Bases de
Données
141
Equivalences
col1 =(select
min(col2) from …)
col1 <= all (select
col2 from …)
col1 <=(select
max(col2) from …)
col1 <= any (select
col2 from …)
col1 =(select
max(col2) from …)
col1 >= all (select
col2 from …)
col1 >= (select
min(col2) from …)
col1 >= any (select
col2 from …)
requête équivalenterequête
Systèmes de
Gestion de
Bases de
Données
142
select *
from produit
where prix = (select max(prix) from produit);
Le nom du produit le plus cher
Exemple
select *
from produit
where prix >=all (select prix from produit);
Systèmes de
Gestion de
Bases de
Données
143
Id du produit le plus commandé
Sous requête et Having
select idProduit
from ligne
Group by idProduit
Having count(*) >=all(select count(*)
from ligne
group by idProduit);
Attention: dans ce cas on ne peut pas remplacer « >= all » par
« … = select max (..) … »
Systèmes de
Gestion de
Bases de
Données
144
1. nom et prix des produits qui n’ont jamais été
commandés ;
2. id et nom des personnes qui n’ont jamais passé de
commande ;
3. id de la commande la plus chère ;
4. id, nom et prix des produits plus chers que la
moyenne ;
5. id des marques qui n’ont jamais été commandées
par la personne dont l’id est « 752 » ;
6. id des commandes avec l’écart entre leur montant et
le montant de la commande la plus chère ;
Sous-requêtes : exercices
Systèmes de
Gestion de
Bases de
Données
145
7. Nombre de produits qui n’ont jamais été
commandés ;
8. Pourcentage du chiffre d’affaire pour chaque
marque.
9. Listes des produits triés dans l’ordre: de celui
dont le prix est le plus proche de la moyenne, à
celui dont le prix est le plus éloigné.
10. Id du produit médian. Le produit médian est
celui pour lequel on trouve autant de produits
plus chers que de produits moins chers.
Sous-requêtes : exercices
Systèmes de
Gestion de
Bases de
Données
146
•Les sous-requêtes étudiées jusqu’à présent sont indépendantes
de la requête externe à la quelle elles sont intégrées.
•Pour extraire certaines informations, il faut parfois avoir recours
à des sous-requêtes plus élaborées: les sous-requêtes corrélatives.
•On parle de sous-requête corrélative lorsqu’il y a corrélation
entre les données provenant de la requête principale et celles de la
sous-requête.
•La sous-requête ne peut plus s’exécuter indépendamment de la
requête principale.
Sous-requêtes corrélatives