Sous-requête d'existence IN
Introduction
Cette sous-requête permet de vérifier que la projection d'un tuple de la requête principale est présent dans la sous-requête.
Syntaxe :
La projection du tuple de la requête principale doit conduire à un schéma relationnel identique à celui de la requête imbriquée.
Exemple : Sous-requête IN à une colonne et plusieurs lignes
CTRL+C pour copier, CTRL+V pour coller
1
SELECT Chercheur.Nom
2
FROM Chercheur
3
WHERE Chercheur.Universite IN
4
(SELECT Universite.Nom
5
FROM Universite
6
WHERE Universite.Ville='Paris')
SELECT Chercheur.Nom FROM Chercheur WHERE Chercheur.Universite IN (SELECT Universite.Nom FROM Universite WHERE Universite.Ville='Paris')
Exemple : Sous-requête IN à plusieurs colonnes et plusieurs lignes
Exemple : Imbrication multiple de requêtes
CTRL+C pour copier, CTRL+V pour coller
1
SELECT Nom
2
FROM Chercheur
3
WHERE Universite='Paris6' AND Nom IN
4
(SELECT Nom
5
FROM Enseignant
6
WHERE Universite IN
7
(SELECT Nom
8
FROM Universite
9
WHERE Ville='Paris'))
SELECT Nom FROM Chercheur WHERE Universite='Paris6' AND Nom IN (SELECT Nom FROM Enseignant WHERE Universite IN (SELECT Nom FROM Universite WHERE Ville='Paris'))
Remarque : Jointure par la sous-requête IN
La sous-requête IN est une troisième voie, avec les clauses WHERE et JOIN, pour réaliser des jointures entre relations. On préfèrera néanmoins éviter d'utiliser à cette unique fin cette version plus procédurale.
Remarque : NOT IN
On peut tester la non existence du tuple dans la sous requête en utilisant la clause NOT IN à la place de la clause IN.