SlideShare una empresa de Scribd logo
1 de 10
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.
Objectifs
A 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ème
Supposons qu’on veut afficher tous lesSupposons qu’on veut afficher tous les
employés ayant un salaire supérieur auemployé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.I2. 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éechaque sous-interrogation est exécutée
une seule fois pour chaque ligne de laune seule fois pour chaque ligne de la
requête externe.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
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ê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 leRecherchez tous les employés dont le
salaire est supérieur au salaire moyen desalaire 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érateur
NOT 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

Más contenido relacionado

La actualidad más candente

Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdf
slimyaich3
 
cours javascript.pptx
cours javascript.pptxcours javascript.pptx
cours javascript.pptx
YaminaGh1
 
Cours08 exceptions
Cours08 exceptionsCours08 exceptions
Cours08 exceptions
Issam Talkam
 

La actualidad más candente (20)

Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQL
 
resume algo 2023.pdf
resume algo 2023.pdfresume algo 2023.pdf
resume algo 2023.pdf
 
Opérateurs Ensemblistes | SQL Oracle
Opérateurs Ensemblistes | SQL OracleOpérateurs Ensemblistes | SQL Oracle
Opérateurs Ensemblistes | SQL Oracle
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdf
 
Cours JavaScript
Cours JavaScriptCours JavaScript
Cours JavaScript
 
Tp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-EclipseTp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-Eclipse
 
cours javascript.pptx
cours javascript.pptxcours javascript.pptx
cours javascript.pptx
 
PL/SQL:les curseurs
PL/SQL:les curseursPL/SQL:les curseurs
PL/SQL:les curseurs
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El Hassani
 
Corrige tp java
Corrige tp javaCorrige tp java
Corrige tp java
 
Algorithmes de tri
Algorithmes de triAlgorithmes de tri
Algorithmes de tri
 
Introduction au langage SQL
Introduction au langage SQLIntroduction au langage SQL
Introduction au langage SQL
 
exercices base de données - sql
exercices  base de données - sql exercices  base de données - sql
exercices base de données - sql
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-Correction
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java Héritage
 
Java collection
Java collection Java collection
Java collection
 
Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2
 
Introduction à pl/sql
Introduction à pl/sqlIntroduction à pl/sql
Introduction à pl/sql
 
Cours+sql++ +base+de+données+-+bac+informatique+(2009-2010)++elève++khmiri+zied
Cours+sql++ +base+de+données+-+bac+informatique+(2009-2010)++elève++khmiri+ziedCours+sql++ +base+de+données+-+bac+informatique+(2009-2010)++elève++khmiri+zied
Cours+sql++ +base+de+données+-+bac+informatique+(2009-2010)++elève++khmiri+zied
 
Cours08 exceptions
Cours08 exceptionsCours08 exceptions
Cours08 exceptions
 

Destacado

Destacado (20)

Examne sybase corrige
Examne sybase corrigeExamne sybase corrige
Examne sybase corrige
 
Principes de fonctionnement unix
Principes de fonctionnement unixPrincipes de fonctionnement unix
Principes de fonctionnement unix
 
Paie Marocaine [Suite RH] [Odoo]
Paie Marocaine [Suite RH] [Odoo]Paie Marocaine [Suite RH] [Odoo]
Paie Marocaine [Suite RH] [Odoo]
 
Sous-Interrogations Multi-colonne | SQL Oracle
Sous-Interrogations Multi-colonne | SQL OracleSous-Interrogations Multi-colonne | SQL Oracle
Sous-Interrogations Multi-colonne | SQL Oracle
 
SQL Oracle | Regrouper les Données avec les Fonctions de Groupe
SQL Oracle | Regrouper les Données avec les Fonctions de GroupeSQL Oracle | Regrouper les Données avec les Fonctions de Groupe
SQL Oracle | Regrouper les Données avec les Fonctions de Groupe
 
Point de vente ( Odoo )
Point de vente ( Odoo ) Point de vente ( Odoo )
Point de vente ( Odoo )
 
Paie Marocaine Sous Odoo
Paie Marocaine Sous OdooPaie Marocaine Sous Odoo
Paie Marocaine Sous Odoo
 
Comptabilité général
Comptabilité généralComptabilité général
Comptabilité général
 
Telecharger Exercices corrigés sqlplus
Telecharger Exercices corrigés sqlplusTelecharger Exercices corrigés sqlplus
Telecharger Exercices corrigés sqlplus
 
Presentation module HR et la gestion de la paie marocaine
Presentation module HR et la gestion de la paie marocainePresentation module HR et la gestion de la paie marocaine
Presentation module HR et la gestion de la paie marocaine
 
MÉMOIRE DE FIN D'ÉTUDE - LA COMMUNICATION DES CONCEPT-STORES
MÉMOIRE DE FIN D'ÉTUDE - LA COMMUNICATION DES CONCEPT-STORES MÉMOIRE DE FIN D'ÉTUDE - LA COMMUNICATION DES CONCEPT-STORES
MÉMOIRE DE FIN D'ÉTUDE - LA COMMUNICATION DES CONCEPT-STORES
 
[MÉMOIRE] Améliorer l'image de marque d'une entreprise sur les médias sociaux...
[MÉMOIRE] Améliorer l'image de marque d'une entreprise sur les médias sociaux...[MÉMOIRE] Améliorer l'image de marque d'une entreprise sur les médias sociaux...
[MÉMOIRE] Améliorer l'image de marque d'une entreprise sur les médias sociaux...
 
Création de Vues | SQL Oracle
Création de Vues | SQL OracleCréation de Vues | SQL Oracle
Création de Vues | SQL Oracle
 
Afficher des Données Issues de Plusieurs Tables : SQL Oracle
Afficher des Données Issues de Plusieurs Tables : SQL OracleAfficher des Données Issues de Plusieurs Tables : SQL Oracle
Afficher des Données Issues de Plusieurs Tables : SQL Oracle
 
Crm odoo (OpenDev)
Crm odoo (OpenDev)Crm odoo (OpenDev)
Crm odoo (OpenDev)
 
SQL Oracle : Sélection et Tri des Lignes Retournées par un SELECT
SQL Oracle : Sélection et Tri des Lignes Retournées par un SELECTSQL Oracle : Sélection et Tri des Lignes Retournées par un SELECT
SQL Oracle : Sélection et Tri des Lignes Retournées par un SELECT
 
ICHEC BAC 1 INTRODUCTION AU MANAGEMENT CH.2
ICHEC BAC 1 INTRODUCTION AU MANAGEMENT CH.2ICHEC BAC 1 INTRODUCTION AU MANAGEMENT CH.2
ICHEC BAC 1 INTRODUCTION AU MANAGEMENT CH.2
 
Fonctions Mono-Ligne
Fonctions Mono-LigneFonctions Mono-Ligne
Fonctions Mono-Ligne
 
Manipulation des Données , cours sql oracle
Manipulation des Données , cours sql oracleManipulation des Données , cours sql oracle
Manipulation des Données , cours sql oracle
 
Mise en Forme des Résultats avec SQL*Plus
Mise en Forme des Résultats avec SQL*PlusMise en Forme des Résultats avec SQL*Plus
Mise en Forme des Résultats avec SQL*Plus
 

Similar a Écriture de Sous-Interrogations Synchronisées | SQL Oracle

Similar a Écriture de Sous-Interrogations Synchronisées | SQL Oracle (7)

L'Ordre SELECT Élémentaire | SQL Oracle
L'Ordre SELECT Élémentaire | SQL OracleL'Ordre SELECT Élémentaire | SQL Oracle
L'Ordre SELECT Élémentaire | SQL Oracle
 
09_SousInterroSynchro.ppt
09_SousInterroSynchro.ppt09_SousInterroSynchro.ppt
09_SousInterroSynchro.ppt
 
Les06.ppt
Les06.pptLes06.ppt
Les06.ppt
 
Les07.ppt
Les07.pptLes07.ppt
Les07.ppt
 
MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?
MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?
MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?
 
Université de la performance
Université de la performanceUniversité de la performance
Université de la performance
 
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon
 

Más de webreaker

Más de webreaker (7)

Examen sybase - Administration base de donnees
Examen sybase - Administration base de donneesExamen sybase - Administration base de donnees
Examen sybase - Administration base de donnees
 
Introduction aux techniques de déduplication
Introduction aux techniques de déduplicationIntroduction aux techniques de déduplication
Introduction aux techniques de déduplication
 
Telecharger Cours java pour debutant pdf
Telecharger Cours java pour debutant pdfTelecharger Cours java pour debutant pdf
Telecharger Cours java pour debutant pdf
 
Principes Relationnels et Concepts Oracle
Principes Relationnelset Concepts OraclePrincipes Relationnelset Concepts Oracle
Principes Relationnels et Concepts Oracle
 
Création et Gestion de Tables | SQL Oracle
Création et Gestion de Tables | SQL OracleCréation et Gestion de Tables | SQL Oracle
Création et Gestion de Tables | SQL Oracle
 
Administration systeme UNIX
Administration systeme UNIXAdministration systeme UNIX
Administration systeme UNIX
 
Telecharger Cours Systèmes d’exploitation windows: Administration Windows
Telecharger Cours Systèmes d’exploitation windows: Administration  WindowsTelecharger Cours Systèmes d’exploitation windows: Administration  Windows
Telecharger Cours Systèmes d’exploitation windows: Administration Windows
 

Último

Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
AmgdoulHatim
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
ikospam0
 

Último (19)

Cours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiquesCours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiques
 
Les roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxLes roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptx
 
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetFormation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
 
les_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkles_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhk
 
python-Cours Officiel POO Python-m103.pdf
python-Cours Officiel POO Python-m103.pdfpython-Cours Officiel POO Python-m103.pdf
python-Cours Officiel POO Python-m103.pdf
 
Télécommunication et transport .pdfcours
Télécommunication et transport .pdfcoursTélécommunication et transport .pdfcours
Télécommunication et transport .pdfcours
 
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKRAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaire
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
 
Formation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxFormation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptx
 
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
 
L'expression du but : fiche et exercices niveau C1 FLE
L'expression du but : fiche et exercices  niveau C1 FLEL'expression du but : fiche et exercices  niveau C1 FLE
L'expression du but : fiche et exercices niveau C1 FLE
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
 
Echos libraries Burkina Faso newsletter 2024
Echos libraries Burkina Faso newsletter 2024Echos libraries Burkina Faso newsletter 2024
Echos libraries Burkina Faso newsletter 2024
 
L application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxL application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptx
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
 
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxIntégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
 
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
 
Neuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean EudesNeuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean Eudes
 

Écriture de Sous-Interrogations Synchronisées | SQL Oracle

  • 1. Copyright © Oracle Corporation, 1998. Tous droits réservés. 99 Écriture de Sous- Interrogations Synchronisées www.TelechargerCours.com
  • 2. 9-2 Copyright © Oracle Corporation, 1998. Tous droits réservés. Objectifs A 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
  • 3. 9-3 Copyright © Oracle Corporation, 1998. Tous droits réservés. Exemple & Problème Supposons qu’on veut afficher tous lesSupposons qu’on veut afficher tous les employés ayant un salaire supérieur auemployé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.I2. Utiliser une S.I SynchroniséeSynchronisée www.TelechargerCours.com
  • 4. 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éechaque sous-interrogation est exécutée une seule fois pour chaque ligne de laune seule fois pour chaque ligne de la requête externe.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. www.TelechargerCours.com
  • 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 leRecherchez tous les employés dont le salaire est supérieur au salaire moyen desalaire 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);
  • 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-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
  • 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> 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
  • 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. www.TelechargerCours.com

Notas del editor

  1. Objectifs Dans ce chapitre, vous allez apprendre à résoudre différents problèmes à l'aide de Sous-Interrogations Synchronisées.
  2. Utilisation de Sous-Interrogations Synchronisées Dans l'exemple ci-dessus, nous recherchons les employés dont le salaire est supérieur au salaire moyen de leur département. Dans ce cas, la Sous-Interrogation Synchronisée calcule explicitement le salaire moyen de chaque département. Comme les requêtes externe et interne utilisent toutes les deux la table EMP dans la clause FROM, un alias est attribué à chaque ordre SELECT pour plus de clarté. Grâce aux alias, les ordres SELECT deviennent plus lisibles et la requête s'exécute correctement, car elle peut distinguer la colonne de la table interne de celle de la table externe, ce qui ne serait pas possible sans les alias.
  3. Sous-Interrogations Synchronisées Une Sous-Interrogation Synchronisée ou Corrrélée est une sous-interrogation imbriquée qui est exécutée une seule fois pour chaque ligne traitée par la requête principale et qui, pendant son exécution, utilise une valeur d'une colonne de la requête externe. sous-interrogations Imbriquées et Sous-Interrogations Synchronisées Avec une sous-interrogation imbriquée normale, l'ordre SELECT interne est d'abord exécuté pour retourner des valeurs qui seront récupérées par la requête principale. Par contre, une Sous-Interrogation Synchronisée est exécutée une fois pour chaque ligne candidate prise en compte par la requête externe. Autrement dit, la requête interne est pilotée par la requête externe. Exécution d'une Sous-Interrogation Synchronisée 1. Récupérer une ligne candidate (extraite par la requête externe). 2. Exécuter la requête interne avec la valeur de la ligne candidate. 3. Utiliser la ou les valeurs résultant de la requête interne pour sélectionner ou ne pas sélectionner la ligne candidate. 4. Répéter ces étapes jusqu'à ce qu'il ne reste plus de lignes candidates. Même si cette description est centrée principalement sur les Sous-Interrogations Synchronisées des ordres SELECT, elle s'applique également aux ordres UPDATE et DELETE (voir chapitre concernant la Manipulation des Données).
  4. Sous-Interrogations Synchronisées (suite) Une Sous-Interrogation Synchronisée permet de "lire" chaque ligne d'une table et de comparer les valeurs de chaque ligne aux données associées. Elle est utilisée chaque fois qu'une sous-interrogation doit retourner un résultat ou un ensemble de résultats différent pour chaque ligne candidate prise en compte par la requête principale. Autrement dit, une Sous-Interrogation Synchronisée permet de répondre à une question à plusieurs choix, dont la réponse dépend de la valeur de chaque ligne traitée par l'ordre maître. Oracle exécute une Sous-Interrogation Synchronisée lorsque la sous-interrogation fait référence à une colonne d'une table de la requête principale.
  5. Utilisation de Sous-Interrogations Synchronisées Dans l'exemple ci-dessus, nous recherchons les employés dont le salaire est supérieur au salaire moyen de leur département. Dans ce cas, la Sous-Interrogation Synchronisée calcule explicitement le salaire moyen de chaque département. Comme les requêtes externe et interne utilisent toutes les deux la table EMP dans la clause FROM, un alias est attribué à chaque ordre SELECT pour plus de clarté. Grâce aux alias, les ordres SELECT deviennent plus lisibles et la requête s'exécute correctement, car elle peut distinguer la colonne de la table interne de celle de la table externe, ce qui ne serait pas possible sans les alias.
  6. L'Opérateur EXISTS Avec des ordres SELECT imbriqués, tous les opérateurs logiques sont valides. De plus, vous pouvez recourir à l'opérateur EXISTS. Cet opérateur est souvent utilisé dans les Sous-Interrogations Synchronisées, car il permet de tester s'il existe une valeur. Si la valeur existe, il retourne la valeur TRUE (vrai) ; sinon, il retourne la valeur FALSE (faux). De la même façon, l'opérateur NOT EXISTS garantit qu'il n'existe aucune valeur.
  7. Utilisation de l'Opérateur EXISTS Cet opérateur garantit que la recherche dans la requête interne ne se poursuivra pas s'il existe au moins une correspondance entre un responsable et des numéros d'employés.
  8. Utilisation de l'Opérateur EXISTS (suite) Notez que l'ordre interne SELECT ne doit pas retourner nécessairement une valeur spécifique, étant donné qu'aucun littéral ne peut être sélectionné. Pour des raisons de performances, il est plus rapide de sélectionner une constante qu'une colonne. Autre solution Comme le montre cet exemple, il est possible d'utiliser une structure NOT IN à la place de l'opérateur NOT EXISTS. Cependant, vous devez l'utiliser avec prudence, car elle retourne la valeur FALSE si un membre du groupe a une valeur NULL. Dans ce cas, votre requête ne ramènera aucune ligne. SQL> SELECT deptno, dname 2 FROM dept 3 WHERE deptno NOT IN (SELECT deptno 4 FROM emp);
  9. Même si cette description est centrée principalement sur les Sous-Interrogations Synchronisées des ordres SELECT, elle s'applique également aux ordres UPDATE et DELETE (voir chapitre concernant la Manipulation des Données).