SlideShare une entreprise Scribd logo
1  sur  13
Copyright © Oracle Corporation, 1997. Tous droits réservés.
88
Sous-Interrogations Multi-colonne
www.TelechargerCours.com
8-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 :
• Ecrire une sous-interrogation multi-
colonne
• Décrire et expliquer le comportement
des sous-interrogations lorsqu'elles
trouvent des valeurs NULL
• Ecrire une sous-interrogation dans une
clause FROM
www.TelechargerCours.com
8-3 Copyright © Oracle Corporation, 1997. Tous droits réservés.
Sous-Interrogations Multi-colonne
Requête principale
MANAGER 10
sous-interrogation
SALESMAN 30
MANAGER 10
CLERK 20
La requêteLa requête
principaleprincipale
comparecompare
MANAGER 10MANAGER 10
Valeurs d'une sous-interrogationValeurs d'une sous-interrogation
multi-ligne et multi-colonnemulti-ligne et multi-colonne
SALESMANSALESMAN 3030
MANAGERMANAGER 1010
CLERKCLERK 2020
auxaux
www.TelechargerCours.com
8-4 Copyright © Oracle Corporation, 1997. Tous droits réservés.
syntaxe
SELECT column, column, ….
FROM table
WHERE (column, column, ….) IN
(SELECT column, column, ….
FROM table
WHERE condition);
www.TelechargerCours.com
8-5 Copyright © Oracle Corporation, 1997. Tous droits réservés.
Utilisation des Sous-
Interrogations Multi-colonne
Afficher le nom, le numéro de département, leAfficher le nom, le numéro de département, le
salaire et la commission de tout employé dont lesalaire et la commission de tout employé dont le
salaire et la commission correspondentsalaire et la commission correspondent à la foisà la fois
aux salaire et commission d'un des employé duaux salaire et commission d'un des employé du
département 30.département 30.
SQL> SELECT ename, deptno, sal, comm
FROM emp
WHERE (sal, NVL(comm,-1)) IN
(SELECT sal, NVL(comm,-1)
FROM emp
WHERE deptno = 30);
8-6 Copyright © Oracle Corporation, 1997. Tous droits réservés.
Comparaison de Colonnes
Par groupe de colonnes
SAL COMM
1600 300
1250 500
1250 1400
2850
1500 0
950
Colonne par colonne
SAL COMM
1600 300
1250 500
1250 1400
2850
1500 0
950
www.TelechargerCours.com
8-7 Copyright © Oracle Corporation, 1997. Tous droits réservés.
Sous-Interrogation avec
Comparaison Colonne par Colonne
SQL> SELECT ename, deptno, sal, comm
2 FROM emp
3 WHERE sal IN (SELECT sal
4 FROM emp
5 WHERE deptno = 30)
6 AND
7 NVL(comm,-1) IN (SELECT NVL(comm,-1)
8 FROM emp
9 WHERE deptno = 30);
Afficher le nom, le n° de département, le salaireAfficher le nom, le n° de département, le salaire
et la commission de tout employé dont leet la commission de tout employé dont le
salaire et la commission correspondent ausalaire et la commission correspondent au
salaire et à la commission d'un des employéssalaire et à la commission d'un des employés
du département 30.du département 30.
8-8 Copyright © Oracle Corporation, 1997. Tous droits réservés.
Modification de la Table EMP
• Supposons que le salaire et la commission de
l'employé Clark soient modifiés.
• Le salaire passe à $1500 et la commission à
$300.
ENAME SAL COMM
---------- --------- ---------
...
CLARK 1500 300
...
ALLEN 1600 300
TURNER 1500 0
...
14 rows selected.
www.TelechargerCours.com
8-9 Copyright © Oracle Corporation, 1997. Tous droits réservés.
Comparaison par Groupe de
Colonne
SQL> SELECT ename, deptno, sal, comm
2 FROM emp
3 WHERE (sal, NVL(comm,-1)) IN
4 (SELECT sal, NVL(comm,-1)
5 FROM emp
6 WHERE deptno = 30);
ENAME DEPTNO SAL COMM
---------- --------- --------- ---------
JAMES 30 950
WARD 30 1250 500
MARTIN 30 1250 1400
TURNER 30 1500 0
ALLEN 30 1600 300
BLAKE 30 2850
6 rows selected.
ENAME DEPTNO SAL COMM
---------- --------- --------- ---------
JAMES 30 950
WARD 30 1250 500
MARTIN 30 1250 1400
TURNER 30 1500 0
ALLEN 30 1600 300
BLAKE 30 2850
6 rows selected.
8-10 Copyright © Oracle Corporation, 1997. Tous droits réservés.
SQL> SELECT ename,deptno, sal, comm
2 FROM emp
3 WHERE sal IN (SELECT sal
4 FROM emp
5 WHERE deptno = 30)
6 AND
7 NVL(comm,-1) IN (SELECT NVL(comm,-1)
8 FROM emp
9 WHERE deptno = 30);
Comparaison Colonne par
Colonne
ENAME DEPTNO SAL COMM
---------- --------- --------- ---------
JAMES 30 950
BLAKE 30 2850
TURNER 30 1500 0
CLARK 10 1500 300
...
7 rows selected.
8-11 Copyright © Oracle Corporation, 1997. Tous droits réservés.
Valeurs NULL dans une Sous-
Interrogation
SQL> SELECT employee.ename
2 FROM emp employee
3 WHERE employee.empno NOT IN
(SELECT manager.mgr
FROM emp manager);
no rows selected.no rows selected.
www.TelechargerCours.com
8-12 Copyright © Oracle Corporation, 1997. Tous droits réservés.
Utilisation d'une Sous-intérogation
dans la Clause FROM
SQL> SELECT a.ename, a.sal, a.deptno, b.salavg
2 FROM emp a, (SELECT deptno, avg(sal) salavg
3 FROM emp
4 GROUP BY deptno) b
5 WHERE a.deptno = b.deptno
6 AND a.sal > b.salavg;
8-13 Copyright © Oracle Corporation, 1997. Tous droits réservés.
Résumé
• Une sous-interrogation multi-colonne
ramène plus d'une colonne.
• Dans une sous-interrogation multi-
colonne, les comparaisons de colonnes
peuvent être effectuées par groupe de
colonne ou colonne par colonne.
• Une sous-interrogation multi-colonne
peut également s'utiliser dans la clause
FROM d'un ordre SELECT.
www.TelechargerCours.com

Contenu connexe

Tendances

Alphorm.com Formation Wireshark : L'essentiel
Alphorm.com Formation Wireshark : L'essentielAlphorm.com Formation Wireshark : L'essentiel
Alphorm.com Formation Wireshark : L'essentiel
Alphorm
 

Tendances (20)

03 Writing Control Structures, Writing with Compatible Data Types Using Expli...
03 Writing Control Structures, Writing with Compatible Data Types Using Expli...03 Writing Control Structures, Writing with Compatible Data Types Using Expli...
03 Writing Control Structures, Writing with Compatible Data Types Using Expli...
 
ORACLE PL SQL FOR BEGINNERS
ORACLE PL SQL FOR BEGINNERSORACLE PL SQL FOR BEGINNERS
ORACLE PL SQL FOR BEGINNERS
 
Opérateurs Ensemblistes | SQL Oracle
Opérateurs Ensemblistes | SQL OracleOpérateurs Ensemblistes | SQL Oracle
Opérateurs Ensemblistes | SQL Oracle
 
Création de Vues | SQL Oracle
Création de Vues | SQL OracleCréation de Vues | SQL Oracle
Création de Vues | SQL Oracle
 
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
 
Oracle GoldenGate Veridata概要
Oracle GoldenGate Veridata概要Oracle GoldenGate Veridata概要
Oracle GoldenGate Veridata概要
 
Fonctions Mono-Ligne
Fonctions Mono-LigneFonctions Mono-Ligne
Fonctions Mono-Ligne
 
08 Dynamic SQL and Metadata
08 Dynamic SQL and Metadata08 Dynamic SQL and Metadata
08 Dynamic SQL and Metadata
 
Introduction à pl/sql
Introduction à pl/sqlIntroduction à pl/sql
Introduction à pl/sql
 
09 Managing Dependencies
09 Managing Dependencies09 Managing Dependencies
09 Managing Dependencies
 
Rapport DVWA: CSRF
Rapport DVWA: CSRFRapport DVWA: CSRF
Rapport DVWA: CSRF
 
PostgreSQL運用管理入門
PostgreSQL運用管理入門PostgreSQL運用管理入門
PostgreSQL運用管理入門
 
Five_Things_You_Might_Not_Know_About_Oracle_Database_v2.pptx
Five_Things_You_Might_Not_Know_About_Oracle_Database_v2.pptxFive_Things_You_Might_Not_Know_About_Oracle_Database_v2.pptx
Five_Things_You_Might_Not_Know_About_Oracle_Database_v2.pptx
 
05 Creating Stored Procedures
05 Creating Stored Procedures05 Creating Stored Procedures
05 Creating Stored Procedures
 
02 Writing Executable Statments
02 Writing Executable Statments02 Writing Executable Statments
02 Writing Executable Statments
 
Exercice 2 java Héritage
Exercice 2  java HéritageExercice 2  java Héritage
Exercice 2 java Héritage
 
Alphorm.com Formation Wireshark : L'essentiel
Alphorm.com Formation Wireshark : L'essentielAlphorm.com Formation Wireshark : L'essentiel
Alphorm.com Formation Wireshark : L'essentiel
 
Qlik Replicateのタスク実行時の操作
Qlik Replicateのタスク実行時の操作Qlik Replicateのタスク実行時の操作
Qlik Replicateのタスク実行時の操作
 
11 Understanding and Influencing the PL/SQL Compilar
11 Understanding and Influencing the PL/SQL Compilar11 Understanding and Influencing the PL/SQL Compilar
11 Understanding and Influencing the PL/SQL Compilar
 
Le langage plsql
Le langage plsqlLe langage plsql
Le langage plsql
 

En vedette

Les ActivitéS
Les ActivitéSLes ActivitéS
Les ActivitéS
MadameChan
 
La negociation, la proposition rectifiee xxxx
La negociation, la proposition rectifiee xxxxLa negociation, la proposition rectifiee xxxx
La negociation, la proposition rectifiee xxxx
sergedicredico
 

En vedette (17)

Les ActivitéS
Les ActivitéSLes ActivitéS
Les ActivitéS
 
Extraction Hiérarchique | Cours sql oracle
Extraction Hiérarchique | Cours sql oracleExtraction Hiérarchique | Cours sql oracle
Extraction Hiérarchique | Cours sql oracle
 
Quest Ce Que Tu Aimes Faire Lesson 1
Quest Ce Que Tu Aimes Faire   Lesson 1Quest Ce Que Tu Aimes Faire   Lesson 1
Quest Ce Que Tu Aimes Faire Lesson 1
 
Les Sports et Les Activités
Les Sports et Les ActivitésLes Sports et Les Activités
Les Sports et Les Activités
 
Les Contraintes | SQL Oracle
Les Contraintes | SQL OracleLes Contraintes | SQL Oracle
Les Contraintes | 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
 
Faire et jouer
Faire et jouerFaire et jouer
Faire et jouer
 
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
 
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
 
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
 
La negociation, la proposition rectifiee xxxx
La negociation, la proposition rectifiee xxxxLa negociation, la proposition rectifiee xxxx
La negociation, la proposition rectifiee xxxx
 
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
 
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
 
Et si le renouveau des magasins passait par les tablettes vendeurs ? (confére...
Et si le renouveau des magasins passait par les tablettes vendeurs ? (confére...Et si le renouveau des magasins passait par les tablettes vendeurs ? (confére...
Et si le renouveau des magasins passait par les tablettes vendeurs ? (confére...
 
La routine - Habitudes et tâches du quotidien
La routine - Habitudes et tâches du quotidienLa routine - Habitudes et tâches du quotidien
La routine - Habitudes et tâches du quotidien
 
Une introduction au e-commerce (ICHEC 2012)
Une introduction au e-commerce (ICHEC 2012)Une introduction au e-commerce (ICHEC 2012)
Une introduction au e-commerce (ICHEC 2012)
 
La Gestion de Projet Mobile
La Gestion de Projet MobileLa Gestion de Projet Mobile
La Gestion de Projet Mobile
 

Similaire à Sous-Interrogations Multi-colonne | 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
 

Similaire à Sous-Interrogations Multi-colonne | SQL Oracle (15)

01 l'ordre select élémentaire
01 l'ordre select élémentaire 01 l'ordre select élémentaire
01 l'ordre select élémentaire
 
Les03.ppt
Les03.pptLes03.ppt
Les03.ppt
 
12 fr
12 fr12 fr
12 fr
 
PL/SQL:les curseurs
PL/SQL:les curseursPL/SQL:les curseurs
PL/SQL:les curseurs
 
Principes Relationnels et Concepts Oracle
Principes Relationnelset Concepts OraclePrincipes Relationnelset Concepts Oracle
Principes Relationnels et Concepts Oracle
 
Plsql
PlsqlPlsql
Plsql
 
Les06.ppt
Les06.pptLes06.ppt
Les06.ppt
 
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
 
Les07.ppt
Les07.pptLes07.ppt
Les07.ppt
 
1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdf1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdf
 
Rapport tp matlab babaoui arrakiz
Rapport tp matlab babaoui arrakizRapport tp matlab babaoui arrakiz
Rapport tp matlab babaoui arrakiz
 
Functions
FunctionsFunctions
Functions
 
Plsql
PlsqlPlsql
Plsql
 
Telecharger Exercices corrigés sqlplus
Telecharger Exercices corrigés sqlplusTelecharger Exercices corrigés sqlplus
Telecharger Exercices corrigés sqlplus
 
chapitre6_Le_Langage_SQL-2.pdf
chapitre6_Le_Langage_SQL-2.pdfchapitre6_Le_Langage_SQL-2.pdf
chapitre6_Le_Langage_SQL-2.pdf
 

Plus de webreaker

Plus de webreaker (7)

Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQL
 
Examne sybase corrige
Examne sybase corrigeExamne sybase corrige
Examne sybase corrige
 
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

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
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdf
ssuserc72852
 

Dernier (20)

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
 
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...
 
Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxComputer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.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
 
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
 
La mondialisation avantages et inconvénients
La mondialisation avantages et inconvénientsLa mondialisation avantages et inconvénients
La mondialisation avantages et inconvénients
 
Formation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxFormation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptx
 
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
 
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
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.
 
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...
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdf
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film français
 
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
 
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 ...
 
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
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdf
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film français
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaire
 

Sous-Interrogations Multi-colonne | SQL Oracle

  • 1. Copyright © Oracle Corporation, 1997. Tous droits réservés. 88 Sous-Interrogations Multi-colonne www.TelechargerCours.com
  • 2. 8-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 : • Ecrire une sous-interrogation multi- colonne • Décrire et expliquer le comportement des sous-interrogations lorsqu'elles trouvent des valeurs NULL • Ecrire une sous-interrogation dans une clause FROM www.TelechargerCours.com
  • 3. 8-3 Copyright © Oracle Corporation, 1997. Tous droits réservés. Sous-Interrogations Multi-colonne Requête principale MANAGER 10 sous-interrogation SALESMAN 30 MANAGER 10 CLERK 20 La requêteLa requête principaleprincipale comparecompare MANAGER 10MANAGER 10 Valeurs d'une sous-interrogationValeurs d'une sous-interrogation multi-ligne et multi-colonnemulti-ligne et multi-colonne SALESMANSALESMAN 3030 MANAGERMANAGER 1010 CLERKCLERK 2020 auxaux www.TelechargerCours.com
  • 4. 8-4 Copyright © Oracle Corporation, 1997. Tous droits réservés. syntaxe SELECT column, column, …. FROM table WHERE (column, column, ….) IN (SELECT column, column, …. FROM table WHERE condition); www.TelechargerCours.com
  • 5. 8-5 Copyright © Oracle Corporation, 1997. Tous droits réservés. Utilisation des Sous- Interrogations Multi-colonne Afficher le nom, le numéro de département, leAfficher le nom, le numéro de département, le salaire et la commission de tout employé dont lesalaire et la commission de tout employé dont le salaire et la commission correspondentsalaire et la commission correspondent à la foisà la fois aux salaire et commission d'un des employé duaux salaire et commission d'un des employé du département 30.département 30. SQL> SELECT ename, deptno, sal, comm FROM emp WHERE (sal, NVL(comm,-1)) IN (SELECT sal, NVL(comm,-1) FROM emp WHERE deptno = 30);
  • 6. 8-6 Copyright © Oracle Corporation, 1997. Tous droits réservés. Comparaison de Colonnes Par groupe de colonnes SAL COMM 1600 300 1250 500 1250 1400 2850 1500 0 950 Colonne par colonne SAL COMM 1600 300 1250 500 1250 1400 2850 1500 0 950 www.TelechargerCours.com
  • 7. 8-7 Copyright © Oracle Corporation, 1997. Tous droits réservés. Sous-Interrogation avec Comparaison Colonne par Colonne SQL> SELECT ename, deptno, sal, comm 2 FROM emp 3 WHERE sal IN (SELECT sal 4 FROM emp 5 WHERE deptno = 30) 6 AND 7 NVL(comm,-1) IN (SELECT NVL(comm,-1) 8 FROM emp 9 WHERE deptno = 30); Afficher le nom, le n° de département, le salaireAfficher le nom, le n° de département, le salaire et la commission de tout employé dont leet la commission de tout employé dont le salaire et la commission correspondent ausalaire et la commission correspondent au salaire et à la commission d'un des employéssalaire et à la commission d'un des employés du département 30.du département 30.
  • 8. 8-8 Copyright © Oracle Corporation, 1997. Tous droits réservés. Modification de la Table EMP • Supposons que le salaire et la commission de l'employé Clark soient modifiés. • Le salaire passe à $1500 et la commission à $300. ENAME SAL COMM ---------- --------- --------- ... CLARK 1500 300 ... ALLEN 1600 300 TURNER 1500 0 ... 14 rows selected. www.TelechargerCours.com
  • 9. 8-9 Copyright © Oracle Corporation, 1997. Tous droits réservés. Comparaison par Groupe de Colonne SQL> SELECT ename, deptno, sal, comm 2 FROM emp 3 WHERE (sal, NVL(comm,-1)) IN 4 (SELECT sal, NVL(comm,-1) 5 FROM emp 6 WHERE deptno = 30); ENAME DEPTNO SAL COMM ---------- --------- --------- --------- JAMES 30 950 WARD 30 1250 500 MARTIN 30 1250 1400 TURNER 30 1500 0 ALLEN 30 1600 300 BLAKE 30 2850 6 rows selected. ENAME DEPTNO SAL COMM ---------- --------- --------- --------- JAMES 30 950 WARD 30 1250 500 MARTIN 30 1250 1400 TURNER 30 1500 0 ALLEN 30 1600 300 BLAKE 30 2850 6 rows selected.
  • 10. 8-10 Copyright © Oracle Corporation, 1997. Tous droits réservés. SQL> SELECT ename,deptno, sal, comm 2 FROM emp 3 WHERE sal IN (SELECT sal 4 FROM emp 5 WHERE deptno = 30) 6 AND 7 NVL(comm,-1) IN (SELECT NVL(comm,-1) 8 FROM emp 9 WHERE deptno = 30); Comparaison Colonne par Colonne ENAME DEPTNO SAL COMM ---------- --------- --------- --------- JAMES 30 950 BLAKE 30 2850 TURNER 30 1500 0 CLARK 10 1500 300 ... 7 rows selected.
  • 11. 8-11 Copyright © Oracle Corporation, 1997. Tous droits réservés. Valeurs NULL dans une Sous- Interrogation SQL> SELECT employee.ename 2 FROM emp employee 3 WHERE employee.empno NOT IN (SELECT manager.mgr FROM emp manager); no rows selected.no rows selected. www.TelechargerCours.com
  • 12. 8-12 Copyright © Oracle Corporation, 1997. Tous droits réservés. Utilisation d'une Sous-intérogation dans la Clause FROM SQL> SELECT a.ename, a.sal, a.deptno, b.salavg 2 FROM emp a, (SELECT deptno, avg(sal) salavg 3 FROM emp 4 GROUP BY deptno) b 5 WHERE a.deptno = b.deptno 6 AND a.sal > b.salavg;
  • 13. 8-13 Copyright © Oracle Corporation, 1997. Tous droits réservés. Résumé • Une sous-interrogation multi-colonne ramène plus d'une colonne. • Dans une sous-interrogation multi- colonne, les comparaisons de colonnes peuvent être effectuées par groupe de colonne ou colonne par colonne. • Une sous-interrogation multi-colonne peut également s'utiliser dans la clause FROM d'un ordre SELECT. www.TelechargerCours.com

Notes de l'éditeur

  1. Objectifs Au cours de ce chapitre, vous allez apprendre à écrire des sous-interrogations multi-colonne et des sous-interrogations dans la clause FROM d'un ordre SELECT.
  2. Sous-Interrogations Multi-colonne Jusqu'à maintenant, vous avez écrit des sous-interrogations mono-ligne et multi-ligne dans lesquelles une seule colonne était comparée via la clause WHERE ou HAVING de l'ordre SELECT principal. Si vous voulez comparer plusieurs colonnes, vous devez écrire une clause WHERE composée utilisant des opérateurs logiques. Les sous-interrogations multi-colonne vous permettent de combiner plusieurs conditions WHERE dans une même clause WHERE. Syntaxe SELECT column, column , ... FROM table WHERE ( column, column , ...) IN (SELECT column, column , ... FROM table WHERE condition );
  3. Utilisation des Sous-Interrogations Multi-colonne La sous-interrogation ci-dessus, qui ramène plusieurs colonnes, est un exemple de sous-interrogation multi-colonne. Elle compare la colonne SAL et la colonne COMM. Elle affiche le nom, le numéro de département, le salaire et la commission de tout employé dont le salaire et la commission correspondent à la fois aux salaire et commission d'un des employés du département 30. L'ordre SQL ci-dessus donnera les résultats suivants : ENAME DEPTNO SAL COMM ---------- --------- --------- --------- JAMES 30 950 WARD 30 1250 500 MARTIN 30 1250 1400 TURNER 30 1500 0 ALLEN 30 1600 300 BLAKE 30 2850 6 rows selected.
  4. Utilisation des Sous-Interrogations Multi-colonne La sous-interrogation ci-dessus, qui ramène plusieurs colonnes, est un exemple de sous-interrogation multi-colonne. Elle compare la colonne SAL et la colonne COMM. Elle affiche le nom, le numéro de département, le salaire et la commission de tout employé dont le salaire et la commission correspondent à la fois aux salaire et commission d'un des employés du département 30. L'ordre SQL ci-dessus donnera les résultats suivants : ENAME DEPTNO SAL COMM ---------- --------- --------- --------- JAMES 30 950 WARD 30 1250 500 MARTIN 30 1250 1400 TURNER 30 1500 0 ALLEN 30 1600 300 BLAKE 30 2850 6 rows selected.
  5. Comparaisons " par Groupe de Colonnes" versus "Colonne par Colone" Dans une sous-interrogation multi-colonne, les comparaisons peuvent être effectuées "par groupe de colonnes" ou "colonne par colonne". Dans l'exemple de la diapositive précédente, la comparaison exécutée dans la clause WHERE est faite par groupe de colonnes: chaque ligne rapportée par l'ordre SELECT doit comporter à la fois le même salaire et la même commission qu'un employé du département 30. Pour effectuer une comparaison par groupe de colonnes, utilisez une clause WHERE avec seule condition faisant intervenir les différentes colonnes. Pour effectuer une comparaison colonne par colonne (produit cartésien), utilisez une clause WHERE avec de multiples conditions, chaque condition faisant intervenir une colonne.
  6. Sous-Interrogation Effectuant une Comparaison Colonne par Colonne L'exemple ci-dessus effectue une comparaison colonne par colonne. Il affiche le nom, le numéro de département, le salaire et la commission de tout employé dont le salaire et la commission correspondent au salaire et à la commission d'un employé du département 30. L'ordre SQL ci-dessus donnera le résultat suivant : Le résultat des deux dernières requêtes est identique bien que les conditions de comparaison diffèrent. Cela s'explique par la nature des données présentes dans la table EMP. ENAME DEPTNO SAL COMM ---------- --------- --------- --------- JAMES 30 950 BLAKE 30 2850 TURNER 30 1500 0 ALLEN 30 1600 300 WARD 30 1250 500 MARTIN 30 1250 1400 6 rows selected.
  7. Exemple Supposons que le salaire et la commission de l'employé Clark soient modifiés de telle sorte qu'il ait le même salaire qu'un employé du département 30 et la même commission qu'un autre employé du département 30. Le salaire de Clark est désormais égal à celui de Turner ($1500) et sa commission est la même que celle d'Allen ($300). Nous allons maintenant exécuter une comparaison par groupe de colonnes puis colonne par colonne pour voir combien de lignes sont ramenées dans chaque cas. Remarque : la syntaxe à utiliser pour mettre à jour les données d'une table sera traitée au cours du chapitre 9.
  8. Sous-Interrogation avec Comparaison par Groupe de Colonnes Les résultats de la sous-interrogation avec comparaison par groupe de colonnes ne changent pas et ramènent toujours six lignes.
  9. Sous-Interrogation avec Comparaison Colonne par Colonne Le résultat de la sous-interrogation avec comparaison colonne par colonne inclut l'employé Clark puisque maintenant, son salaire est le même que celui de Turner et sa commission identique à celle d'Allen.
  10. Présence d'une Valeur NULL dans les Résultats d'une Sous-Interrogation L'ordre SQL ci-dessus tente d'afficher tous les employés n'ayant pas de subordonné. L'ordre SQL ne ramène aucune ligne alors que logiquement, il aurait dû en renvoyer huit. En fait, l'une des valeurs ramenées par la sous-interrogation étant une valeur NULL, la requête principale ne renvoie aucune ligne. En effet, quand dans une interrogation, on utilise un opérateur de comparaison (=,>, <,...) pour comparer une valeur à NULL, cette interrogation retourne zéro ligne. NULL ne peut être testé qu'avec les opérateurs IS NULL et IS NOT NULL. C'est pourquoi, chaque fois que les résultats d'une sous-interrogation risquent de contenir des valeurs NULL, vous ne devez pas utiliser l'opérateur NOT IN. L'opérateur NOT IN est l'équivalent de !=ALL. En revanche, la présence d'une valeur NULL dans le résultat d'une sous-interrogation ne posera pas de problème si vous utilisez l'opérateur IN. Celui-ci est l'équivalent de =ANY. Par exemple, pour afficher les employés qui ont des subordonnés, utilisez l'ordre SQL suivant : SQL> SELECT employee.ename 2 FROM emp employee 3 WHERE employee.empno IN (SELECT manager.mgr 4 FROM emp manager); ENAME ---------- KING … 6 rows selected.
  11. Utilisation d'une Sous-Interrogation dans la Clause FROM Vous pouvez utiliser une sous-interrogation dans la clause FROM d'un ordre SELECT. Cette méthode présente de nombreuses similitudes avec le mode d'utilisation des vues. L'exemple ci-dessus affiche le nom, le salaire, le numéro de département et le salaire moyen du département pour tous les employés gagnant plus que le salaire moyen de leur département.