Académique Documents
Professionnel Documents
Culture Documents
Lotfi NAJDI
Année Universitaire 2020 / 2021
Licence Professionnelle Génie Informatique
Faculté Polydisciplinaire de Taroudant
Qu'est-ce qu'une Sous-Interrogation ?
Requête SELECT . . .
principale FROM . . .
WHERE . . .
(SELECT . . . Sous-interrogation
FROM . . .
WHERE . . .)
Utilisation d'une Sous-Interrogation pour résoudre un problème
donné
"Qui a un salaire supérieur à celui de Abel ?"
Requête principale
Sous-interrogation
?
"Quel est le salaire de Abel?"
Sous-interrogation
<> ou !=,
BETWEEN,
LIKE.
Sous-Interrogation retournant une seule ligne
SELECT last_name, job_id, salary
FROM employees
WHERE job_id =
( SELECT job_id SA_REP
FROM employees
WHERE last_name = 'Taylor' and first_name = 'Jonathon')
AND salary >
(SELECT salary 8600
FROM employees
WHERE last_name = 'Taylor' and first_name = 'Jonathon') ;
Utilisation des fonctions de groupement à l’intérieur des sous
interrogations
Le serveur Oracle renvoie les résultats dans la clause HAVING de la requête principale.
Utilisation de la Clause HAVING avec les sous interrogations
Opérateur Description
IN vérifier si une valeur est égale à une des valeurs comprise dans
la liste retournée par la sous requête.
ALL vérifier si une valeur satisfait une condition, pour tous les
résultats retourné par une sous-requête.
Doit être également précédé par =, !=, >, <, <=, >=.
Requête imbriquée retournant plusieurs lignes
Les opérateurs AYN et ALL sont utilisés avec une clause "WHERE" ou "HAVING".
L'opérateur ANY Renvoie TRUE si l'une des valeurs retournées par la sous-requête (au
L'opérateur ALL renvoie TRUE si la condition est satisfaite par toutes les valeurs
57 Lignes
Utilisation de l’opérateur ALL avec les sous interrogations multi lignes
23 Lignes
Règles d'utilisation des sous-interrogations (suite)
critère de recherche.
Valeurs Null et sous interrogations
IN est équivalent à =ANY NULL ne pose pas de problème
• Sous-requête imbriquée : pas de lien explicite entre la requête interne, qui est exécutée 1 seule
fois.
Principe :
Fonctionnement :
Dès qu’une ligne est trouvée par la sous-interrogation , la recherche dans la requête
interne est interrompue et la condition est évaluée comme TRUE.
Si aucune ligne n’est trouvée par la sous-interrogation, la condition est fausse (FALSE). *
EXISTS / NOT EXISTS
EXISTS
NOT EXISTS
EXISTS / NOT EXISTS
les opérateurs EXISTS et NOT EXISTS offrent de très bonnes performances par rapport aux
Dans le cas de IN, le moteur SQL analyse tous les enregistrements récupérés dans la
requête interne. Tandis que, pour EXISTS, le moteur SQL va arrêter le processus de
SELECT first_name,salary,round(dep_salavg,2),emp.department_id
FROM employees emp,( SELECT department_id, AVG(salary) dep_salavg
FROM employees
GROUP BY department_id ) dep
WHERE emp.department_id = dep.department_id;