Sommaire

Les sous-requêtes

Il est possible d’insérer une requête dans une autre. Celle-ci peut se trouver après la clause WHERE ou remplacer une constante derrière un ordre IN ou EXISTS, par exemple.

Il existe deux types de sous-requêtes : imbriquées ou corrélées.

1. Les sous-requêtes imbriquées

En fonction de ce que peut ramener le sous-SELECT, celui-ci ne pourra pas être positionné n’importe où.

Si le résultat de la requête placé dans un sous-SELECT ne ramène qu’une seule ligne, on pourra utiliser la sous-requête à la place de n’importe quelle constante.

Par exemple, si on veut récupérer tous les films qui ont dans leur casting au moins un acteur français, il faut faire un sous-SELECT qui récupère l’identifiant de la table PAYS qui correspond au pays FRANCE, puis vérifier que la colonne NATIONALITE de la table ACTEUR correspond à la valeur du sous-SELECT. 

Avant de tester la requête complète, il est préférable de tester la sous-requête en premier pour vérifier sa validité et que celle-ci ramène une seule ligne.

Exemple

SELECT PAYS.IDENT_PAYS FROM PAYS WHERE  
PAYS.LIBELLE = ’FRANCE’;

affiche :

IDENT_PAYS  
----------  
         1

Ensuite, on peut inclure la sous-requête dans la requête principale ainsi :

SELECT SUBSTR(FILM.TITRE,1,20) TITRE, ...