Les sous-requêtes
Une requête placée dans une autre : sous-requête scalaire, de liste avec IN et ANY, EXISTS et NOT EXISTS, table dérivée dans FROM, sous-requête corrélée ou non, et les pièges de NOT IN avec des NULL.
- 25 cartes
- 6 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Les chiffres
- Mises en situation
- Comprendre
Quelques cartes du deck
Sous-requête scalaire : de quoi s'agit-il ?
Voir la réponse
Requête SELECT entre parenthèses qui rend une seule colonne et au plus une ligne : le moteur l'emploie comme une valeur, par exemple à droite d'un
>ou d'un=.duree > (SELECT AVG(duree) FROM film)compare chaque film à une moyenne calculée une seule fois. Si elle rend plusieurs lignes, la base refuse :more than one row returned by a subquery used as an expression.La table film contient Dune (155 min), Alien (117), Amélie (122), Titanic (195), Matrix (136) et Intouchables (112). Quelles lignes rend cette requête ?
```sql
SELECT titre FROM film
WHERE duree > (SELECT AVG(duree) FROM film);`DuneetTitanicDune,TitanicetMatrixDuneseulementAlien,AmélieetIntouchables
Voir la réponse
DuneetTitanicLa moyenne vaut 837 / 6 = 139,5 minutes. Seuls Dune (155) et Titanic (195) la dépassent ; Matrix, à 136, reste en dessous.
Une requête entre parenthèses placée à droite d'un
=doit rendre … ; pour en accepter plusieurs, on écritINà la place.Voir la réponse
Une requête entre parenthèses placée à droite d'un
=doit rendre au plus une ligne ; pour en accepter plusieurs, on écritINà la place.Sinon la base s'arrête avec
more than one row returned by a subquery used as an expression. Avec zéro ligne, la valeur est NULL et la comparaison n'est jamais vraie.Sous-requête de liste : de quoi s'agit-il ?
Voir la réponse
Requête entre parenthèses qui rend une colonne de plusieurs lignes, comparée à une valeur avec
IN,NOT IN,ANYouALL.WHERE id IN (SELECT id_client FROM commande)garde les clients dont l'identifiant figure dans la liste.INéquivaut à= ANY, et> ALLveut dire « plus grand que chacune des valeurs ».