SlideShare une entreprise Scribd logo
1  sur  21
Copyright © Oracle Corporation, 1997. Tous droits réservés.
77
Sous-Interrogations
www.TelechargerCours.com
7-2 Copyright © Oracle Corporation, 1997. 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 que les
sous-interrogations peuvent résoudre
• Définir des sous-interrogations
• Enumérer les types de sous-
interrogations
• Ecrire des sous-interrogations mono-
ligne et multi-ligne
www.TelechargerCours.com
7-3 Copyright © Oracle Corporation, 1997. Tous droits réservés.
Définition
Une Sous-interrogation est un ordre SELECTUne Sous-interrogation est un ordre SELECT
imbriqué dans une clause d’un autre ordreimbriqué dans une clause d’un autre ordre
SELECT .SELECT .
Elles permettent de sélectionner des lignes d’uneElles permettent de sélectionner des lignes d’une
table lorsque la condition dépend des donnéestable lorsque la condition dépend des données
de la table elle-même .de la table elle-même .
Peuvent être placées dans les clauses SQLPeuvent être placées dans les clauses SQL
suivantes :suivantes :
WHEREWHERE
HAVINGHAVING
FROMFROM
www.TelechargerCours.com
7-4 Copyright © Oracle Corporation, 1997. Tous droits réservés.
Utilisation d'une Sous-Interrogation
pour Résoudre un Problème
"Qui a un salaire supérieur à celui de Jones ?""Qui a un salaire supérieur à celui de Jones ?"
"Quel employé a un salaire supérieur à
celui de Jones ?"
Requête principale
??
"Quel est le salaire de Jones ?"
??
sous-interrogation
www.TelechargerCours.com
7-5 Copyright © Oracle Corporation, 1997. Tous droits réservés.
Sous-Interrogations
• La sous-interrogation (requête interne)
est exécutée une fois avant la requête
principale.
• Le résultat de la sous-interrogation est
utilisé par la requête principale
(externe).
SELECT select_list
FROM table
WHERE expr operator
(SELECT select_list
FROM table);
www.TelechargerCours.com
7-6 Copyright © Oracle Corporation, 1997. Tous droits réservés.
2975
SQL> SELECT ename
2 FROM emp
3 WHERE sal >
4 (SELECT sal
5 FROM emp
6 WHERE empno=7566);
Utilisation d'une Sous-Interrogation
ENAME
----------
KING
FORD
SCOTT
ENAME
----------
KING
FORD
SCOTT
www.TelechargerCours.com
7-7 Copyright © Oracle Corporation, 1997. Tous droits réservés.
Conventions d'Utilisation des
Sous-Interrogations
• Placez les sous-interrogations entre
parenthèses.
• Placez les sous-interrogations à droite
de l'opérateur de comparaison.
• N'ajoutez jamais de clause ORDER BY à
une sous-interrogation.
• Utilisez les opérateurs mono-ligne avec
les sous-interrogations mono-ligne.
• Utilisez les opérateurs multi-ligne avec
les sous-interrogations multi-ligne.
7-8 Copyright © Oracle Corporation, 1997. Tous droits réservés.
Types de Sous-Interrogations
• Sous-interrogation mono-ligne
Requête principale
sous-interrogation
ramèneramène
CLERKCLERK
• Sous-interrogation multi-ligne
CLERKCLERK
MANAGERMANAGER
Requête principale
ramèneramène
• Sous-interrogation multi-colonne
CLERK 7900CLERK 7900
MANAGER 7698MANAGER 7698
Requête principale
ramèneramène
sous-interrogation
sous-interrogation
7-9 Copyright © Oracle Corporation, 1997. Tous droits réservés.
Sous-Interrogations Mono-ligne
• Ne ramènent qu'une seule ligne
• Utilisent des opérateurs de
comparaison mono-ligne
Opérateur
=
>
>=
<
<=
<>
Signification
Egal à
Supérieur à
Supérieur ou égal à
Inférieur à
Inférieur ou égal à
Différent de
7-10 Copyright © Oracle Corporation, 1997. Tous droits réservés.
Sous-Interrogations Mono-ligne
Afficher les employés occupant le même
poste que l’employé No. 7369 ?
SELECT ename, job
FROM emp
WHERE job = ( SELECT job
FROM emp
WHERE empno=7369 );
7-11 Copyright © Oracle Corporation, 1997. Tous droits réservés.
Exécution de Sous-Interrogations
Mono-ligne
CLERK
1100
ENAME JOB
---------- ---------
MILLER CLERK
ENAME JOB
---------- ---------
MILLER CLERK
SQL> SELECT ename, job
2 FROM emp
3 WHERE job =
4 (SELECT job
5 FROM emp
6 WHERE empno = 7369)
7 AND sal >
8 (SELECT sal
9 FROM emp
10 WHERE empno = 7876);
7-12 Copyright © Oracle Corporation, 1997. Tous droits réservés.
Utilisation de Fonctions de
Groupe dans une Sous-
Interrogation
800
ENAME JOB SAL
---------- --------- ---------
SMITH CLERK 800
ENAME JOB SAL
---------- --------- ---------
SMITH CLERK 800
SQL> SELECT ename, job, sal
2 FROM emp
3 WHERE sal =
4 (SELECT MIN(sal)
5 FROM emp);
www.TelechargerCours.com
7-13 Copyright © Oracle Corporation, 1997. Tous droits réservés.
Clause HAVING avec Sous-
Interrogations
• Oracle Server exécute les sous-
interrogations en premier.
• Oracle Server ramène les résultats dans
la clause HAVING de la requête
principale.
800
SQL> SELECT deptno, MIN(sal)
2 FROM emp
3 GROUP BY deptno
4 HAVING MIN(sal) >
5 (SELECT MIN(sal)
6 FROM emp
7 WHERE deptno = 20);
7-14 Copyright © Oracle Corporation, 1997. Tous droits réservés.
Exemple
• Trouver le poste ayant le salaire moyen
le moins élevé .
SELECT job, AVG(sal)
FROM emp
GROUP BY job
HAVING AVG(sal) =
( SELECT MIN(AVG(sal))
FROM emp
GROUP B job )
www.TelechargerCours.com
7-15 Copyright © Oracle Corporation, 1997. Tous droits réservés.
Qu'est-ce Qui ne Va pas dans
cet Ordre ?
ERROR:
ORA-01427: single-row sub-query returns more than
one row
no rows selected
ERROR:
ORA-01427: single-row sub-query returns more than
one row
no rows selected
SQL> SELECT empno, ename
2 FROM emp
3 WHERE sal =
4 (SELECT MIN(sal)
5 FROM emp
6 GROUP BY deptno);
O
pérateur m
ono-ligne
avec
sous-interrogation
m
ulti-ligne
O
pérateur m
ono-ligne
avec
sous-interrogation
m
ulti-ligne
www.TelechargerCours.com
7-16 Copyright © Oracle Corporation, 1997. Tous droits réservés.
Cet Ordre Va-t-il Fonctionner ?
no rows selectedno rows selected
La
sous-interrogation
ne
ram
ène
aucune
valeur
La
sous-interrogation
ne
ram
ène
aucune
valeur
SQL> SELECT ename, job
2 FROM emp
3 WHERE job =
4 (SELECT job
5 FROM emp
6 WHERE ename='SMYTHE');
www.TelechargerCours.com
7-17 Copyright © Oracle Corporation, 1997. Tous droits réservés.
Sous-Interrogation Multi-ligne
• Ramène plusieurs lignes
• Utilise des opérateurs de comparaison
multi-ligne
Opérateur
IN
ANY
ALL
Signification
Egal à un élément quelconque de la liste
Compare la valeur à chaque valeur
ramenée par la sous-interrogation
Compare la valeur à toutes les valeurs
ramenées par la sous-interrogation
www.TelechargerCours.com
7-18 Copyright © Oracle Corporation, 1997. Tous droits réservés.
Exemple
• Trouver les employés qui gagnent
l’équivalent d’un salaire minimum de
département .
SELECT ename, sal, deptno
FROM emp
WHERE sal
( SELECT MIN(sal)
FROM emp
GROUP B deptno )
IN
www.TelechargerCours.com
7-19 Copyright © Oracle Corporation, 1997. Tous droits réservés.
Utilisation de l'Opérateur ANY
dans les Sous-Interrogations Multi-
ligne
950
800
1100
1300
EMPNO ENAME JOB
--------- ---------- ---------
7654 MARTIN SALESMAN
7521 WARD SALESMAN
EMPNO ENAME JOB
--------- ---------- ---------
7654 MARTIN SALESMAN
7521 WARD SALESMAN
SQL> SELECT empno, ename, job
2 FROM emp
3 WHERE sal < ANY
4 (SELECT sal
5 FROM emp
6 WHERE job = 'CLERK')
7 AND job <> 'CLERK';
www.TelechargerCours.com
7-20 Copyright © Oracle Corporation, 1997. Tous droits réservés.
Utilisation de l'Opérateur ALL dans
les Sous-Interrogations Multi-ligne
2916.6667
2175
1566.6667
EMPNO ENAME JOB
--------- ---------- ---------
7839 KING PRESIDENT
7566 JONES MANAGER
7902 FORD ANALYST
7788 SCOTT ANALYST
EMPNO ENAME JOB
--------- ---------- ---------
7839 KING PRESIDENT
7566 JONES MANAGER
7902 FORD ANALYST
7788 SCOTT ANALYST
SQL> SELECT empno, ename, job
2 FROM emp
3 WHERE sal > ALL
4 (SELECT avg(sal)
5 FROM emp
6 GROUP BY deptno)
7-21 Copyright © Oracle Corporation, 1997. Tous droits réservés.
Résumé
Les sous-interrogations sont utilesLes sous-interrogations sont utiles
lorsqu'une requête fait appel à des valeurslorsqu'une requête fait appel à des valeurs
inconnues.inconnues.
SELECT select_list
FROM table
WHERE expr operator
(SELECT select_list
FROM table);
www.TelechargerCours.com

Contenu connexe

Tendances

Examen principal - PHP
Examen principal - PHPExamen principal - PHP
Examen principal - PHPInes Ouaz
 
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 SELECTwebreaker
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux javaInes Ouaz
 
10 Creating Triggers
10 Creating Triggers10 Creating Triggers
10 Creating Triggersrehaniltifat
 
Cours complet Base de donne Bac
Cours complet Base de donne Bac Cours complet Base de donne Bac
Cours complet Base de donne Bac Amri Ossama
 
Tp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPELTp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPELLilia Sfaxi
 
Administration des base de donnees sous oracle 10g
Administration des base de donnees sous oracle 10g Administration des base de donnees sous oracle 10g
Administration des base de donnees sous oracle 10g noble Bajoli
 
Tp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-EclipseTp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-EclipseLilia Sfaxi
 
Cours python avancé
Cours python avancéCours python avancé
Cours python avancépierrepo
 
Intégration des données avec Talend ETL
Intégration des données avec Talend ETLIntégration des données avec Talend ETL
Intégration des données avec Talend ETLLilia Sfaxi
 
T1 corrections-qcm
T1 corrections-qcmT1 corrections-qcm
T1 corrections-qcminfcom
 
Less04 database instance
Less04 database instanceLess04 database instance
Less04 database instanceAmit Bhalla
 
Cours Visual Basic.NET
Cours Visual Basic.NETCours Visual Basic.NET
Cours Visual Basic.NETAziz Darouichi
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLwebreaker
 
introduction au SQL et MySQL
introduction au SQL et MySQLintroduction au SQL et MySQL
introduction au SQL et MySQLAbdoulaye Dieng
 

Tendances (20)

Examen principal - PHP
Examen principal - PHPExamen principal - PHP
Examen principal - PHP
 
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
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux java
 
SQL-ORACLE.pptx
SQL-ORACLE.pptxSQL-ORACLE.pptx
SQL-ORACLE.pptx
 
10 Creating Triggers
10 Creating Triggers10 Creating Triggers
10 Creating Triggers
 
Cours complet Base de donne Bac
Cours complet Base de donne Bac Cours complet Base de donne Bac
Cours complet Base de donne Bac
 
Etl -
Etl -Etl -
Etl -
 
Introduction au langage SQL
Introduction au langage SQLIntroduction au langage SQL
Introduction au langage SQL
 
Tp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPELTp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPEL
 
Administration des base de donnees sous oracle 10g
Administration des base de donnees sous oracle 10g Administration des base de donnees sous oracle 10g
Administration des base de donnees sous oracle 10g
 
Tp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-EclipseTp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-Eclipse
 
Cours python avancé
Cours python avancéCours python avancé
Cours python avancé
 
Intégration des données avec Talend ETL
Intégration des données avec Talend ETLIntégration des données avec Talend ETL
Intégration des données avec Talend ETL
 
T1 corrections-qcm
T1 corrections-qcmT1 corrections-qcm
T1 corrections-qcm
 
Less04 database instance
Less04 database instanceLess04 database instance
Less04 database instance
 
1 z0 047
1 z0 0471 z0 047
1 z0 047
 
Cours Visual Basic.NET
Cours Visual Basic.NETCours Visual Basic.NET
Cours Visual Basic.NET
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQL
 
introduction au SQL et MySQL
introduction au SQL et MySQLintroduction au SQL et MySQL
introduction au SQL et MySQL
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
 

En vedette

Création de Vues | SQL Oracle
Création de Vues | SQL OracleCréation de Vues | SQL Oracle
Création de Vues | SQL Oraclewebreaker
 
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 Oraclewebreaker
 
Fonctions Mono-Ligne
Fonctions Mono-LigneFonctions Mono-Ligne
Fonctions Mono-Lignewebreaker
 
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 Oraclewebreaker
 
Opérateurs Ensemblistes | SQL Oracle
Opérateurs Ensemblistes | SQL OracleOpérateurs Ensemblistes | SQL Oracle
Opérateurs Ensemblistes | SQL Oraclewebreaker
 
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 oraclewebreaker
 
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 Oraclewebreaker
 
Principes Relationnels et Concepts Oracle
Principes Relationnelset Concepts OraclePrincipes Relationnelset Concepts Oracle
Principes Relationnels et Concepts Oraclewebreaker
 
C# - Mappages de types de données SQL Server
C# - Mappages de types de données SQL ServerC# - Mappages de types de données SQL Server
C# - Mappages de types de données SQL ServerMahfoud EL HOUDAIGUI
 
Gestion avancée avec PMB: traitement par lots (paniers) et SQL: quelques exem...
Gestion avancée avec PMB: traitement par lots (paniers) et SQL: quelques exem...Gestion avancée avec PMB: traitement par lots (paniers) et SQL: quelques exem...
Gestion avancée avec PMB: traitement par lots (paniers) et SQL: quelques exem...PMB-BUG
 
c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)Mahfoud EL HOUDAIGUI
 
2009-03-13 SQL Server une plateforme crédible
2009-03-13 SQL Server une plateforme crédible2009-03-13 SQL Server une plateforme crédible
2009-03-13 SQL Server une plateforme crédiblePatrick Guimonet
 
Merise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigésMerise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigésMajid CHADAD
 
Telecharger Exercices corrigés sqlplus
Telecharger Exercices corrigés sqlplusTelecharger Exercices corrigés sqlplus
Telecharger Exercices corrigés sqlpluswebreaker
 
exercices base de données - sql
exercices  base de données - sql exercices  base de données - sql
exercices base de données - sql Yassine Badri
 
GP Chapitre 2 : Les méthodes de prévision
GP Chapitre 2 : Les méthodes de prévision GP Chapitre 2 : Les méthodes de prévision
GP Chapitre 2 : Les méthodes de prévision ibtissam el hassani
 

En vedette (19)

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
 
Fonctions Mono-Ligne
Fonctions Mono-LigneFonctions Mono-Ligne
Fonctions Mono-Ligne
 
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
 
Opérateurs Ensemblistes | SQL Oracle
Opérateurs Ensemblistes | SQL OracleOpérateurs Ensemblistes | SQL Oracle
Opérateurs Ensemblistes | SQL Oracle
 
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
 
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
 
Principes Relationnels et Concepts Oracle
Principes Relationnelset Concepts OraclePrincipes Relationnelset Concepts Oracle
Principes Relationnels et Concepts Oracle
 
C# dates and times date formats
C# dates and times  date formatsC# dates and times  date formats
C# dates and times date formats
 
C# - Mappages de types de données SQL Server
C# - Mappages de types de données SQL ServerC# - Mappages de types de données SQL Server
C# - Mappages de types de données SQL Server
 
Sql
SqlSql
Sql
 
Gestion avancée avec PMB: traitement par lots (paniers) et SQL: quelques exem...
Gestion avancée avec PMB: traitement par lots (paniers) et SQL: quelques exem...Gestion avancée avec PMB: traitement par lots (paniers) et SQL: quelques exem...
Gestion avancée avec PMB: traitement par lots (paniers) et SQL: quelques exem...
 
c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)
 
C# langage & syntaxe
C#   langage & syntaxeC#   langage & syntaxe
C# langage & syntaxe
 
2009-03-13 SQL Server une plateforme crédible
2009-03-13 SQL Server une plateforme crédible2009-03-13 SQL Server une plateforme crédible
2009-03-13 SQL Server une plateforme crédible
 
Merise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigésMerise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigés
 
Telecharger Exercices corrigés sqlplus
Telecharger Exercices corrigés sqlplusTelecharger Exercices corrigés sqlplus
Telecharger Exercices corrigés sqlplus
 
exercices base de données - sql
exercices  base de données - sql exercices  base de données - sql
exercices base de données - sql
 
GP Chapitre 2 : Les méthodes de prévision
GP Chapitre 2 : Les méthodes de prévision GP Chapitre 2 : Les méthodes de prévision
GP Chapitre 2 : Les méthodes de prévision
 

Similaire à Sous-Interrogations - sql oracle

01 l'ordre select élémentaire
01 l'ordre select élémentaire 01 l'ordre select élémentaire
01 l'ordre select élémentaire ENSAM Casablanca
 
09_SousInterroSynchro.ppt
09_SousInterroSynchro.ppt09_SousInterroSynchro.ppt
09_SousInterroSynchro.pptMostafaKkb
 
chapitre6_Le_Langage_SQL-2.pdf
chapitre6_Le_Langage_SQL-2.pdfchapitre6_Le_Langage_SQL-2.pdf
chapitre6_Le_Langage_SQL-2.pdfattamatta1234
 
Pl/sql - interaction avec la base de données & structures de contrôle
Pl/sql  - interaction avec la base de données & structures de contrôlePl/sql  - interaction avec la base de données & structures de contrôle
Pl/sql - interaction avec la base de données & structures de contrôleAbdelouahed Abdou
 
Plsql
PlsqlPlsql
PlsqlAz Za
 

Similaire à Sous-Interrogations - sql oracle (16)

01 l'ordre select élémentaire
01 l'ordre select élémentaire 01 l'ordre select élémentaire
01 l'ordre select élémentaire
 
Les06.ppt
Les06.pptLes06.ppt
Les06.ppt
 
12 fr
12 fr12 fr
12 fr
 
Les03.ppt
Les03.pptLes03.ppt
Les03.ppt
 
Les07.ppt
Les07.pptLes07.ppt
Les07.ppt
 
Les04.ppt
Les04.pptLes04.ppt
Les04.ppt
 
09_SousInterroSynchro.ppt
09_SousInterroSynchro.ppt09_SousInterroSynchro.ppt
09_SousInterroSynchro.ppt
 
Cours sql-sh-
Cours sql-sh-Cours sql-sh-
Cours sql-sh-
 
Les01.ppt
Les01.pptLes01.ppt
Les01.ppt
 
Les05.ppt
Les05.pptLes05.ppt
Les05.ppt
 
chapitre6_Le_Langage_SQL-2.pdf
chapitre6_Le_Langage_SQL-2.pdfchapitre6_Le_Langage_SQL-2.pdf
chapitre6_Le_Langage_SQL-2.pdf
 
Cours sql-sh-
Cours sql-sh-Cours sql-sh-
Cours sql-sh-
 
cours-sql-sh-.pdf
cours-sql-sh-.pdfcours-sql-sh-.pdf
cours-sql-sh-.pdf
 
Plsql
PlsqlPlsql
Plsql
 
Pl/sql - interaction avec la base de données & structures de contrôle
Pl/sql  - interaction avec la base de données & structures de contrôlePl/sql  - interaction avec la base de données & structures de contrôle
Pl/sql - interaction avec la base de données & structures de contrôle
 
Plsql
PlsqlPlsql
Plsql
 

Plus de webreaker

Examne sybase corrige
Examne sybase corrigeExamne sybase corrige
Examne sybase corrigewebreaker
 
Examen sybase - Administration base de donnees
Examen sybase - Administration base de donneesExamen sybase - Administration base de donnees
Examen sybase - Administration base de donneeswebreaker
 
Introduction aux techniques de déduplication
Introduction aux techniques de déduplicationIntroduction aux techniques de déduplication
Introduction aux techniques de déduplicationwebreaker
 
Telecharger Cours java pour debutant pdf
Telecharger Cours java pour debutant pdfTelecharger Cours java pour debutant pdf
Telecharger Cours java pour debutant pdfwebreaker
 
Principes de fonctionnement unix
Principes de fonctionnement unixPrincipes de fonctionnement unix
Principes de fonctionnement unixwebreaker
 
Administration systeme UNIX
Administration systeme UNIXAdministration systeme UNIX
Administration systeme UNIXwebreaker
 
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 Windowswebreaker
 

Plus de webreaker (7)

Examne sybase corrige
Examne sybase corrigeExamne sybase corrige
Examne sybase corrige
 
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 de fonctionnement unix
Principes de fonctionnement unixPrincipes de fonctionnement unix
Principes de fonctionnement unix
 
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
 

Dernier

les_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkles_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkRefRama
 
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 ...Universidad Complutense de Madrid
 
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.pptxhamzagame
 
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.pdfAmgdoulHatim
 
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.pptxikospam0
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaireTxaruka
 
Télécommunication et transport .pdfcours
Télécommunication et transport .pdfcoursTélécommunication et transport .pdfcours
Télécommunication et transport .pdfcourshalima98ahlmohamed
 
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 EudesUnidad de Espiritualidad Eudista
 
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 BANKNassimaMdh
 
658708519-Power-Point-Management-Interculturel.pdf
658708519-Power-Point-Management-Interculturel.pdf658708519-Power-Point-Management-Interculturel.pdf
658708519-Power-Point-Management-Interculturel.pdfMariaClaraAlves46
 
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...Technologia Formation
 
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 projetJeanYvesMoine
 
STRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdf
STRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdfSTRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdf
STRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdfGamal Mansour
 
Formation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxFormation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxrajaakiass01
 
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 informatiquesMohammedAmineHatoch
 
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...Nguyen Thanh Tu Collection
 
La mondialisation avantages et inconvénients
La mondialisation avantages et inconvénientsLa mondialisation avantages et inconvénients
La mondialisation avantages et inconvénientsJaouadMhirach
 
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.pptxabdououanighd
 
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 FLElebaobabbleu
 

Dernier (20)

les_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkles_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhk
 
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 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
 
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
 
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
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaire
 
Télécommunication et transport .pdfcours
Télécommunication et transport .pdfcoursTélécommunication et transport .pdfcours
Télécommunication et transport .pdfcours
 
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
 
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
 
658708519-Power-Point-Management-Interculturel.pdf
658708519-Power-Point-Management-Interculturel.pdf658708519-Power-Point-Management-Interculturel.pdf
658708519-Power-Point-Management-Interculturel.pdf
 
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...
 
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
 
STRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdf
STRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdfSTRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdf
STRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdf
 
Formation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxFormation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptx
 
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
 
Echos libraries Burkina Faso newsletter 2024
Echos libraries Burkina Faso newsletter 2024Echos libraries Burkina Faso newsletter 2024
Echos libraries Burkina Faso newsletter 2024
 
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...
 
La mondialisation avantages et inconvénients
La mondialisation avantages et inconvénientsLa mondialisation avantages et inconvénients
La mondialisation avantages et inconvénients
 
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
 
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
 

Sous-Interrogations - sql oracle

  • 1. Copyright © Oracle Corporation, 1997. Tous droits réservés. 77 Sous-Interrogations www.TelechargerCours.com
  • 2. 7-2 Copyright © Oracle Corporation, 1997. 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 que les sous-interrogations peuvent résoudre • Définir des sous-interrogations • Enumérer les types de sous- interrogations • Ecrire des sous-interrogations mono- ligne et multi-ligne www.TelechargerCours.com
  • 3. 7-3 Copyright © Oracle Corporation, 1997. Tous droits réservés. Définition Une Sous-interrogation est un ordre SELECTUne Sous-interrogation est un ordre SELECT imbriqué dans une clause d’un autre ordreimbriqué dans une clause d’un autre ordre SELECT .SELECT . Elles permettent de sélectionner des lignes d’uneElles permettent de sélectionner des lignes d’une table lorsque la condition dépend des donnéestable lorsque la condition dépend des données de la table elle-même .de la table elle-même . Peuvent être placées dans les clauses SQLPeuvent être placées dans les clauses SQL suivantes :suivantes : WHEREWHERE HAVINGHAVING FROMFROM www.TelechargerCours.com
  • 4. 7-4 Copyright © Oracle Corporation, 1997. Tous droits réservés. Utilisation d'une Sous-Interrogation pour Résoudre un Problème "Qui a un salaire supérieur à celui de Jones ?""Qui a un salaire supérieur à celui de Jones ?" "Quel employé a un salaire supérieur à celui de Jones ?" Requête principale ?? "Quel est le salaire de Jones ?" ?? sous-interrogation www.TelechargerCours.com
  • 5. 7-5 Copyright © Oracle Corporation, 1997. Tous droits réservés. Sous-Interrogations • La sous-interrogation (requête interne) est exécutée une fois avant la requête principale. • Le résultat de la sous-interrogation est utilisé par la requête principale (externe). SELECT select_list FROM table WHERE expr operator (SELECT select_list FROM table); www.TelechargerCours.com
  • 6. 7-6 Copyright © Oracle Corporation, 1997. Tous droits réservés. 2975 SQL> SELECT ename 2 FROM emp 3 WHERE sal > 4 (SELECT sal 5 FROM emp 6 WHERE empno=7566); Utilisation d'une Sous-Interrogation ENAME ---------- KING FORD SCOTT ENAME ---------- KING FORD SCOTT www.TelechargerCours.com
  • 7. 7-7 Copyright © Oracle Corporation, 1997. Tous droits réservés. Conventions d'Utilisation des Sous-Interrogations • Placez les sous-interrogations entre parenthèses. • Placez les sous-interrogations à droite de l'opérateur de comparaison. • N'ajoutez jamais de clause ORDER BY à une sous-interrogation. • Utilisez les opérateurs mono-ligne avec les sous-interrogations mono-ligne. • Utilisez les opérateurs multi-ligne avec les sous-interrogations multi-ligne.
  • 8. 7-8 Copyright © Oracle Corporation, 1997. Tous droits réservés. Types de Sous-Interrogations • Sous-interrogation mono-ligne Requête principale sous-interrogation ramèneramène CLERKCLERK • Sous-interrogation multi-ligne CLERKCLERK MANAGERMANAGER Requête principale ramèneramène • Sous-interrogation multi-colonne CLERK 7900CLERK 7900 MANAGER 7698MANAGER 7698 Requête principale ramèneramène sous-interrogation sous-interrogation
  • 9. 7-9 Copyright © Oracle Corporation, 1997. Tous droits réservés. Sous-Interrogations Mono-ligne • Ne ramènent qu'une seule ligne • Utilisent des opérateurs de comparaison mono-ligne Opérateur = > >= < <= <> Signification Egal à Supérieur à Supérieur ou égal à Inférieur à Inférieur ou égal à Différent de
  • 10. 7-10 Copyright © Oracle Corporation, 1997. Tous droits réservés. Sous-Interrogations Mono-ligne Afficher les employés occupant le même poste que l’employé No. 7369 ? SELECT ename, job FROM emp WHERE job = ( SELECT job FROM emp WHERE empno=7369 );
  • 11. 7-11 Copyright © Oracle Corporation, 1997. Tous droits réservés. Exécution de Sous-Interrogations Mono-ligne CLERK 1100 ENAME JOB ---------- --------- MILLER CLERK ENAME JOB ---------- --------- MILLER CLERK SQL> SELECT ename, job 2 FROM emp 3 WHERE job = 4 (SELECT job 5 FROM emp 6 WHERE empno = 7369) 7 AND sal > 8 (SELECT sal 9 FROM emp 10 WHERE empno = 7876);
  • 12. 7-12 Copyright © Oracle Corporation, 1997. Tous droits réservés. Utilisation de Fonctions de Groupe dans une Sous- Interrogation 800 ENAME JOB SAL ---------- --------- --------- SMITH CLERK 800 ENAME JOB SAL ---------- --------- --------- SMITH CLERK 800 SQL> SELECT ename, job, sal 2 FROM emp 3 WHERE sal = 4 (SELECT MIN(sal) 5 FROM emp); www.TelechargerCours.com
  • 13. 7-13 Copyright © Oracle Corporation, 1997. Tous droits réservés. Clause HAVING avec Sous- Interrogations • Oracle Server exécute les sous- interrogations en premier. • Oracle Server ramène les résultats dans la clause HAVING de la requête principale. 800 SQL> SELECT deptno, MIN(sal) 2 FROM emp 3 GROUP BY deptno 4 HAVING MIN(sal) > 5 (SELECT MIN(sal) 6 FROM emp 7 WHERE deptno = 20);
  • 14. 7-14 Copyright © Oracle Corporation, 1997. Tous droits réservés. Exemple • Trouver le poste ayant le salaire moyen le moins élevé . SELECT job, AVG(sal) FROM emp GROUP BY job HAVING AVG(sal) = ( SELECT MIN(AVG(sal)) FROM emp GROUP B job ) www.TelechargerCours.com
  • 15. 7-15 Copyright © Oracle Corporation, 1997. Tous droits réservés. Qu'est-ce Qui ne Va pas dans cet Ordre ? ERROR: ORA-01427: single-row sub-query returns more than one row no rows selected ERROR: ORA-01427: single-row sub-query returns more than one row no rows selected SQL> SELECT empno, ename 2 FROM emp 3 WHERE sal = 4 (SELECT MIN(sal) 5 FROM emp 6 GROUP BY deptno); O pérateur m ono-ligne avec sous-interrogation m ulti-ligne O pérateur m ono-ligne avec sous-interrogation m ulti-ligne www.TelechargerCours.com
  • 16. 7-16 Copyright © Oracle Corporation, 1997. Tous droits réservés. Cet Ordre Va-t-il Fonctionner ? no rows selectedno rows selected La sous-interrogation ne ram ène aucune valeur La sous-interrogation ne ram ène aucune valeur SQL> SELECT ename, job 2 FROM emp 3 WHERE job = 4 (SELECT job 5 FROM emp 6 WHERE ename='SMYTHE'); www.TelechargerCours.com
  • 17. 7-17 Copyright © Oracle Corporation, 1997. Tous droits réservés. Sous-Interrogation Multi-ligne • Ramène plusieurs lignes • Utilise des opérateurs de comparaison multi-ligne Opérateur IN ANY ALL Signification Egal à un élément quelconque de la liste Compare la valeur à chaque valeur ramenée par la sous-interrogation Compare la valeur à toutes les valeurs ramenées par la sous-interrogation www.TelechargerCours.com
  • 18. 7-18 Copyright © Oracle Corporation, 1997. Tous droits réservés. Exemple • Trouver les employés qui gagnent l’équivalent d’un salaire minimum de département . SELECT ename, sal, deptno FROM emp WHERE sal ( SELECT MIN(sal) FROM emp GROUP B deptno ) IN www.TelechargerCours.com
  • 19. 7-19 Copyright © Oracle Corporation, 1997. Tous droits réservés. Utilisation de l'Opérateur ANY dans les Sous-Interrogations Multi- ligne 950 800 1100 1300 EMPNO ENAME JOB --------- ---------- --------- 7654 MARTIN SALESMAN 7521 WARD SALESMAN EMPNO ENAME JOB --------- ---------- --------- 7654 MARTIN SALESMAN 7521 WARD SALESMAN SQL> SELECT empno, ename, job 2 FROM emp 3 WHERE sal < ANY 4 (SELECT sal 5 FROM emp 6 WHERE job = 'CLERK') 7 AND job <> 'CLERK'; www.TelechargerCours.com
  • 20. 7-20 Copyright © Oracle Corporation, 1997. Tous droits réservés. Utilisation de l'Opérateur ALL dans les Sous-Interrogations Multi-ligne 2916.6667 2175 1566.6667 EMPNO ENAME JOB --------- ---------- --------- 7839 KING PRESIDENT 7566 JONES MANAGER 7902 FORD ANALYST 7788 SCOTT ANALYST EMPNO ENAME JOB --------- ---------- --------- 7839 KING PRESIDENT 7566 JONES MANAGER 7902 FORD ANALYST 7788 SCOTT ANALYST SQL> SELECT empno, ename, job 2 FROM emp 3 WHERE sal > ALL 4 (SELECT avg(sal) 5 FROM emp 6 GROUP BY deptno)
  • 21. 7-21 Copyright © Oracle Corporation, 1997. Tous droits réservés. Résumé Les sous-interrogations sont utilesLes sous-interrogations sont utiles lorsqu'une requête fait appel à des valeurslorsqu'une requête fait appel à des valeurs inconnues.inconnues. SELECT select_list FROM table WHERE expr operator (SELECT select_list FROM table); www.TelechargerCours.com

Notes de l'éditeur

  1. Objectifs Au cours de ce chapitre, vous allez étudier des aspects plus complexes de l&apos;ordre SELECT. Il est possible d&apos;inclure des sous-interrogations dans la clause WHERE de tout ordre SQL pour obtenir les valeurs de différentes inconnues. Ce chapitre traite des sous-interrogations mono-ligne et multi-ligne.
  2. Objectifs Au cours de ce chapitre, vous allez étudier des aspects plus complexes de l&apos;ordre SELECT. Il est possible d&apos;inclure des sous-interrogations dans la clause WHERE de tout ordre SQL pour obtenir les valeurs de différentes inconnues. Ce chapitre traite des sous-interrogations mono-ligne et multi-ligne.
  3. Utilisation d&apos;une Sous-Interrogation pour Résoudre un Problème Supposons que vous souhaitiez écrire une requête pour trouver qui gagne plus que l&apos;employé Jones. Pour résoudre ce problème, deux requêtes sont nécessaires : une qui trouve le salaire de Jones, et l&apos;autre qui trouve quel employé a un salaire supérieur. A cet effet, vous pouvez combiner deux requêtes, en en plaçant l&apos;une à l&apos;intérieur de l&apos;autre. La requête interne, ou sous-interrogation, ramène une valeur utilisée par la requête externe, ou principale. Utiliser une sous-interrogation revient à exécuter deux requêtes successives en utilisant le résultat de la première comme valeur de recherche de la seconde.
  4. sous-interrogations Une sous-interrogation est un ordre SELECT imbriqué dans une clause d&apos;un autre ordre SELECT. Les sous-interrogations vous permettent de construire des ordres puissants à partir d&apos;instructions toutes simples. Elle s&apos;avèrent très utiles pour sélectionner des lignes d&apos;une table lorsqu&apos;une condition dépend des données de la table elle-même. Vous pouvez placer une sous-interrogation dans les clauses SQL suivantes : WHERE HAVING FROM Syntaxe : operator est un opérateur de comparaison tel que &gt;, = ou IN. Remarque : les opérateurs de comparaison se classent en deux catégories : les opérateurs mono-ligne (&gt;, =, &gt;=, &lt;, &lt;&gt;, &lt;=) et les opérateurs multi-ligne (IN, ANY, ALL). Une sous-interrogation est souvent désignée sous le nom &quot;d&apos;ordre SELECT imbriqué&quot;, &quot;sous-ordre SELECT&quot;, ou encore &quot;ordre SELECT interne&quot;. Elle est exécutée en premier, et son résultat sert à évaluer la condition définie dans l&apos;interrogation principale ou externe.
  5. Utilisation d&apos;une Sous-Interrogation Sur la diapositive, la requête interne recherche quel est le salaire de l&apos;employé 7566. La requête externe prend le résultat de la requête interne et l&apos;utilise pour afficher tous les employés qui gagnent plus que cette somme.
  6. Convention d&apos;Utilisation des sous-interrogations Une sous-interrogation doit être incluse entre parenthèses . Une sous-interrogation doit être placée à droite de l&apos;opérateur de comparaison. Les sous-interrogations ne doivent pas contenir de clause ORDER BY. Il ne peut y avoir qu&apos;une seule clause ORDER BY par ordre SELECT. Si vous en spécifiez une, elle doit obligatoirement figurer en dernier dans l&apos;ordre SELECT principal. Deux catégories d&apos;opérateurs de comparaison sont utilisées dans les sous-interrogations : les opérateurs mono-ligne et les opérateurs multi-ligne .
  7. Types de sous-interrogations Sous-interrogation mono-ligne : ordre SELECT interne qui ne ramène qu&apos;une seule ligne Sous-interrogation multi-ligne : ordre SELECT interne qui ramène plusieurs lignes Sous-interrogation multi-colonne : ordre SELECT interne qui ramène plusieurs colonnes
  8. Sous-Interrogations Mono-ligne Une sous-interrogation mono-ligne ne ramène qu&apos;une seule ligne. Elle utilise un opérateur mono-ligne. Les opérateurs mono-ligne sont énumérés sur la diapositive. Exemple Afficher les employés occupant le même poste que l&apos;employé 7369. SQL&gt; SELECT ename, job 2 FROM emp 3 WHERE job = 4 (SELECT job 5 FROM emp 6 WHERE empno = 7369); ENAME JOB ---------- --------- JAMES CLERK SMITH CLERK ADAMS CLERK MILLER CLERK
  9. Sous-Interrogations Mono-ligne Une sous-interrogation mono-ligne ne ramène qu&apos;une seule ligne. Elle utilise un opérateur mono-ligne. Les opérateurs mono-ligne sont énumérés sur la diapositive. Exemple Afficher les employés occupant le même poste que l&apos;employé 7369. SQL&gt; SELECT ename, job 2 FROM emp 3 WHERE job = 4 (SELECT job 5 FROM emp 6 WHERE empno = 7369); ENAME JOB ---------- --------- JAMES CLERK SMITH CLERK ADAMS CLERK MILLER CLERK
  10. Exécution de Sous-Interrogations Mono-ligne Un ordre SELECT est comparable à un bloc de requêtes. L&apos;exemple ci-dessus affiche les employés occupant le même poste que l&apos;employé 7369 et gagnant plus que l&apos;employé 7876. Cet exemple se compose de trois blocs de requêtes : la requête externe et deux requêtes internes. Les blocs de requêtes internes sont exécutés en premier, donnant les résultats CLERK et 1100, respectivement. Le bloc de requête externe est ensuite traité et utilise les valeurs ramenées par les requêtes internes pour définir sa condition de recherche. Comme les deux requêtes internes ramènent des valeurs uniques (CLERK et 1100, respectivement), ce type d&apos;ordre est appelé sous-interrogation mono-ligne. Remarque: les requêtes internes et externe peuvent rapporter des données issues de différentes tables.
  11. Utilisation de Fonctions de Groupe dans une Sous-Interrogation Vous pouvez afficher les données d&apos;une requête principale en utilisant une fonction de groupe dans une sous-interrogation pour ramener une ligne unique. La sous-interrogation est incluse entre parenthèses et placée à la suite de l&apos;opérateur de comparaison. L&apos;exemple ci-dessus affiche le nom, le poste et le salaire de tous les employés dont le salaire est égal au salaire minimum. La fonction de groupe MIN transmet une valeur unique (800) à la requête externe.
  12. Clause HAVING Comportant des Sous-Interrogations En plus de la clause WHERE, vous pouvez aussi utiliser des sous-interrogations dans la clause HAVING. Oracle Server exécute la sous-interrogation, et ramène les résultats dans la clause HAVING de la requête externe. Sur la diapositive, l&apos;ordre SQL affiche tous les départements dont le salaire minimum est supérieur au salaire minimum du département 20. Exemple Trouver le poste ayant le salaire moyen le moins élevé. DEPTNO MIN(SAL) --------- --------- 10 1300 30 950 SQL&gt; SELECT job, AVG(sal) 2 FROM emp 3 GROUP BY job 4 HAVING AVG(sal) = (SELECT MIN(AVG(sal)) FROM EMP GROUP BY job);
  13. Clause HAVING Comportant des Sous-Interrogations En plus de la clause WHERE, vous pouvez aussi utiliser des sous-interrogations dans la clause HAVING. Oracle Server exécute la sous-interrogation, et ramène les résultats dans la clause HAVING de la requête externe. Sur la diapositive, l&apos;ordre SQL affiche tous les départements dont le salaire minimum est supérieur au salaire minimum du département 20. Exemple Trouver le poste ayant le salaire moyen le moins élevé. DEPTNO MIN(SAL) --------- --------- 10 1300 30 950 SQL&gt; SELECT job, AVG(sal) 2 FROM emp 3 GROUP BY job 4 HAVING AVG(sal) = (SELECT MIN(AVG(sal)) FROM EMP GROUP BY job);
  14. Erreur Liée aux Sous-Interrogations L&apos;affichage de plusieurs lignes en réponse à une sous-interrogation mono-ligne est une erreur courante. Dans l&apos;ordre SQL ci-dessus, la sous-interrogation contient une clause &quot;GROUP BY deptno&quot;, qui implique que la sous-interrogation ramènera plusieurs lignes, à savoir une pour chaque groupe trouvé. Ici, le résultat de la sous-interrogation sera 800, 1300 et 950. La requête externe utilise les résultats de la sous-interrogation (800, 950, 1300) dans sa clause WHERE. Celle-ci contient un opérateur égal (=), c&apos;est-à-dire un opérateur de comparaison mono-ligne qui ne porte que sur une valeur. L&apos;opérateur = ne peut donc accepter les valeurs multiples issues de la sous-interrogation et génère une erreur. Pour remédier à cette erreur, remplacez l&apos;opérateur = par IN.
  15. Problème lié aux Sous-Interrogations L&apos;absence de lignes ramenées par la requête interne est une autre erreur courante avec les sous-interrogations. Dans l&apos;ordre SQL ci-dessus, la sous-interrogation contient la clause &quot;WHERE ename=&apos;SMYTHE&apos;&quot;, dont le but est, a priori, de trouver l&apos;employé dont le nom est Smythe. L&apos;ordre semble correct et cependant, aucune ligne n&apos;est ramenée lors de l&apos;exécution. Le problème est que le nom Smythe est mal orthographié. Comme aucun employé ne s&apos;appelle Smythe, la sous-interrogation ramène zéro ligne. Cette sous-interrogation ramenant zéro ligne, l&apos;interrogation principale va, elle aussi, ramener zéro ligne.
  16. Sous-Interrogations Multi-ligne Les sous-interrogations qui ramènent plusieurs lignes sont appelées sous-interrogations multi-ligne . Elles s&apos;utilisent avec un opérateur multi-ligne. Un opérateur multi-ligne porte sur une ou plusieurs valeurs. Exemple Trouver les employés qui gagnent l&apos;équivalent d&apos;un salaire minimum de département. SQL&gt; SELECT ename, sal, deptno 2 FROM emp 3 WHERE sal IN (SELECT MIN(sal) 4 FROM emp 5 GROUP BY deptno); La requête interne est exécutée en premier, produisant un résultat de trois lignes : 800, 950, 1300. La requête principale est traitée ensuite. Elle utilise les valeurs ramenées par la requête interne pour établir sa condition de recherche. Autrement dit, Oracle Server reçoit la requête principale suivante: SQL&gt; SELECT ename, sal, deptno 2 FROM emp 3 WHERE sal IN (800, 950, 1300);
  17. Clause HAVING Comportant des Sous-Interrogations En plus de la clause WHERE, vous pouvez aussi utiliser des sous-interrogations dans la clause HAVING. Oracle Server exécute la sous-interrogation, et ramène les résultats dans la clause HAVING de la requête externe. Sur la diapositive, l&apos;ordre SQL affiche tous les départements dont le salaire minimum est supérieur au salaire minimum du département 20. Exemple Trouver le poste ayant le salaire moyen le moins élevé. DEPTNO MIN(SAL) --------- --------- 10 1300 30 950 SQL&gt; SELECT job, AVG(sal) 2 FROM emp 3 GROUP BY job 4 HAVING AVG(sal) = (SELECT MIN(AVG(sal)) FROM EMP GROUP BY job);
  18. Sous-interrogations Multi-ligne L&apos;opérateur ANY (et son synonyme SOME) compare une valeur à chaque valeur ramenée par une sous-interrogation. L&apos;exemple ci-dessus affiche les employés dont le salaire est inférieur à celui de n&apos;importe quel employé &apos;CLERK&apos; et qui ne sont pas eux-même &apos;CLERK&apos;. Le salaire maximum d&apos;un &apos;CLERK&apos; est $1300. L&apos;ordre SQL affiche tous les employés qui ne sont pas &apos;CLERK&apos; mais qui gagnent moins de $1300. &lt;ANY signifie inférieur à au moins une des valeurs, donc inférieur au maximum. &gt;ANY signifie supérieur à au moins une des valeurs, donc supérieur au minimum. =ANY équivaut à IN.
  19. Sous-Interrogations Multi-ligne L&apos;opérateur ALL compare une valeur à toutes les valeurs renvoyées par une sous-interrogation. L&apos;exemple ci-dessus affiche les employés dont le salaire est supérieur au salaire moyen de tous les départements. Le salaire moyen le plus élevé étant de $2916.66 dans un département, la requête renvoie tous les employés gagnant plus de $2916.66. &gt;ALL signifie supérieur au maximum et &lt;ALL signifie inférieur au minimum. L&apos;opérateur NOT peut s&apos;utiliser avec les opérateurs IN, ANY et ALL.
  20. Résumé Une sous-interrogation est un ordre SELECT imbriqué dans une clause d&apos;un autre ordre SQL. Les sous-interrogations sont utiles lorsqu&apos;une requête est fondée sur des critères inconnus. Caractéristiques des sous-interrogations : Elles peuvent transmettre une ligne de données à un ordre principal contenant un opérateur mono-ligne tel que =, &lt;&gt;, &gt;, &gt;=, &lt; ou &lt;=. Elles peuvent transmettre plusieurs lignes de données à un ordre principal contenant un opérateur multi-ligne tel que IN. Elles sont traitées en premier par Oracle Server, et leurs résultats sont employés par les clauses WHERE ou HAVING. Elles peuvent contenir des fonctions de groupe.