Click here to load reader
Upload
webreaker
View
445
Download
0
Embed Size (px)
Citation preview
Copyright Oracle Corporation, 1998. Tous droits réservés.
99
Écriture de Sous-Interrogations Synchronisées
www.TelechargerCours.com
9-2 Copyright Oracle Corporation, 1998. Tous droits réservés.
ObjectifsA la fin de ce chapitre, vous saurez :A la fin de ce chapitre, vous saurez :
• Décrire les types de problèmes qui peuvent être résolus à l'aide de Sous-Interrogations Synchronisées
• Écrire des Sous-Interrogations Synchronisées
• Utiliser les opérateurs EXISTS et NOT EXISTS
www.TelechargerCours.com
9-3 Copyright Oracle Corporation, 1998. Tous droits réservés.
Exemple & ProblèmeSupposons qu’on veut afficher tous les Supposons qu’on veut afficher tous les employés ayant un salaire supérieur au employés ayant un salaire supérieur au salaire moyen de leur département.salaire moyen de leur département.
Deux solutionsDeux solutions
1. Utiliser une S.I dans la clause FROM1. Utiliser une S.I dans la clause FROM
2. Utiliser une S.I 2. Utiliser une S.I SynchroniséeSynchronisée
www.TelechargerCours.com
9-4 Copyright Oracle Corporation, 1998. Tous droits réservés.
Sous-Interrogations Synchronisées
Conçue pour un traitement ligne à ligne, Conçue pour un traitement ligne à ligne, chaque sous-interrogation est exécutée chaque sous-interrogation est exécutée une seule fois pour chaque ligne de la une seule fois pour chaque ligne de la requête externe.requête externe.
GETligne candidate
EXECUTErequête interne utilisant une valeur de
la ligne candidate
USEvaleur(s) de la requête interne qualifiant la ligne candidate
9-5 Copyright Oracle Corporation, 1998. Tous droits réservés.
Sous-Interrogations Synchronisées
SyntaxeSyntaxe
SELECT outer1, outer2, ... FROM table1 alias1 WHERE outer1 operator (SELECT inner1 FROM table2 alias2 WHERE alias1.outer2 = alias2.inner1);
La sous-interrogation fait référence à une colonne d'une table de la requête principale.
www.TelechargerCours.com
9-6 Copyright Oracle Corporation, 1998. Tous droits réservés.
Utilisation de Sous-Interrogations Synchronisées
Chaque fois que la requêteexterne est traitée,
la requête interne est exécutée.
EMPNO SAL DEPTNO-------- --------- --------- 7839 5000 10 7698 2850 30 7566 2975 20 ... 6 rows selected.
EMPNO SAL DEPTNO-------- --------- --------- 7839 5000 10 7698 2850 30 7566 2975 20 ... 6 rows selected.
Recherchez tous les employés dont le Recherchez tous les employés dont le salaire est supérieur au salaire moyen de salaire est supérieur au salaire moyen de leur département.leur département.SQL> SELECT empno, sal, deptno 2 FROM emp e 3 WHERE sal > (SELECT AVG(sal) 4 FROM emp e1 5 WHERE e.deptno = e1.deptno);
9-7 Copyright Oracle Corporation, 1998. Tous droits réservés.
Utilisation de l'Opérateur EXISTS
Dès qu'il trouve une ligne par la sous-Dès qu'il trouve une ligne par la sous-interrogation :interrogation :
• La recherche dans la requête interne est interrompue.
• La condition est vraie (TRUE).
S'il ne trouve aucune ligne par la sous-S'il ne trouve aucune ligne par la sous-interrogation :interrogation :
• La condition est fausse (FALSE).
www.TelechargerCours.com
9-8 Copyright Oracle Corporation, 1998. Tous droits réservés.
Recherchez les employés ayant au moins une personne sous leur responsabilité.
Utilisation de l'Opérateur EXISTS
EMPNO ENAME JOB DEPTNO--------- ---------- --------- --------- 7839 KING PRESIDENT 10 7698 BLAKE MANAGER 30 7782 CLARK MANAGER 10 7566 JONES MANAGER 20...6 rows selected.
SQL> SELECT empno, ename, job, deptno 2 FROM emp outer 3 WHERE EXISTS (SELECT empno 4 FROM emp inner 5 WHERE inner.mgr = outer.empno);
9-9 Copyright Oracle Corporation, 1998. Tous droits réservés.
Recherchez tous les départements qui ne comprennent pas d'employés.
Utilisation de l'OpérateurNOT EXISTS
DEPTNO DNAME--------- ---------- 40 OPERATIONS
DEPTNO DNAME--------- ---------- 40 OPERATIONS
SQL> SELECT deptno, dname 2 FROM dept d 3 WHERE NOT EXISTS (SELECT '1' 4 FROM emp e 5 WHERE d.deptno = e.deptno);
www.TelechargerCours.com
9-10 Copyright Oracle Corporation, 1998. Tous droits réservés.
Résumé
• Les Sous-Interrogations Synchronisées s'avèrent très utiles chaque fois qu'une sous-interrogation doit retourner un résultat différent pour chaque ligne candidate.
• EXISTS est un opérateur booléen qui permet de tester l'existence d'une valeur.
• Il est possible d'utiliser des Sous-Interrogations Synchronisées avec les ordres SELECT, UPDATE et DELETE.
www.TelechargerCours.com