La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Copyright Oracle Corporation, 1998. Tous droits réservés. 9 Écriture de Sous- Interrogations Synchronisées.

Présentations similaires


Présentation au sujet: "Copyright Oracle Corporation, 1998. Tous droits réservés. 9 Écriture de Sous- Interrogations Synchronisées."— Transcription de la présentation:

1 Copyright Oracle Corporation, 1998. Tous droits réservés. 9 Écriture de Sous- Interrogations Synchronisées

2 9-2 Copyright Oracle Corporation, 1998. Tous droits réservés. Objectifs 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 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

3 9-3 Copyright Oracle Corporation, 1998. Tous droits réservés. Exemple & Problème Supposons quon veut afficher tous les employés ayant un salaire supérieur au salaire moyen de leur département. Deux solutions 1. Utiliser une S.I dans la clause FROM 2. Utiliser une S.I Synchronisée

4 9-4 Copyright Oracle Corporation, 1998. Tous droits réservés. Sous-Interrogations Synchronisées Conçue pour un traitement ligne à ligne, chaque sous-interrogation est exécutée une seule fois pour chaque ligne de la requête externe. GET ligne candidate EXECUTE requête interne utilisant une valeur de la ligne candidate USE valeur(s) de la requête interne qualifiant la ligne candidate

5 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.

6 9-6 Copyright Oracle Corporation, 1998. Tous droits réservés. Utilisation de Sous- Interrogations Synchronisées Chaque fois que la requête externe 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 salaire est supérieur au salaire moyen de 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);

7 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- interrogation : La recherche dans la requête interne est interrompue. La condition est vraie (TRUE). S'il ne trouve aucune ligne par la sous- interrogation : La condition est fausse (FALSE). Dès qu'il trouve une ligne par la sous- interrogation : La recherche dans la requête interne est interrompue. La condition est vraie (TRUE). S'il ne trouve aucune ligne par la sous- interrogation : La condition est fausse (FALSE).

8 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-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érateur NOT EXISTS DEPTNO DNAME --------- ---------- 40 OPERATIONS DEPTNO DNAME --------- ---------- 40 OPERATIONS SQL> SELECTdeptno, dname 2 FROM dept d 3 WHERENOT EXISTS (SELECT '1' 4 FROM emp e 5 WHERE d.deptno = e.deptno);

10 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. 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.


Télécharger ppt "Copyright Oracle Corporation, 1998. Tous droits réservés. 9 Écriture de Sous- Interrogations Synchronisées."

Présentations similaires


Annonces Google