Dimanche 19 juin 2011 7 19 /06 /Juin /2011 13:05

 

Oracle SQL Sous Requêtes Select multilignes avec IN, ANY, ALL.

Comment comparer une valeur avec les valeurs d'une sous-requetes multiligne dans la clause de condition WHERE ?.

La sous-interrogation doit être placée entre parenthèses, son résultat sera utilisé par la requête de niveau supérieur pour la comparaison.

Les opérateurs =, >, <, >=, <= ramènent une ligne.
Les opérateurs IN, ANY et ALL ramènent plusieurs lignes.

 

Fonctionnement des opérateur de comparaisons IN, ANY et ALL.

OPERATEURS DE COMPARAISONS

RESULTATS

WHERE salaire IN(1200,1600,2000,2900) SALAIRE doit être égale à une des valeurs dans IN()
WHERE salaire NOT IN(1200,1600,2000,2900) SALAIRE ne doit pas être égale à une des valeurs dans IN()
WHERE salaire > ANY(1200,1600,2000,2900) SALAIRE doit être supérieur à au moins une des valeurs.
Donc plus que le minimum (+ de 1200).
WHERE salaire < ANY(1200,1600,2000,2900) SALAIRE doit être inférieur à au moins une des valeurs.
Donc moins que le maximum (- de 2900).
WHERE salaire > ALL(1200,1600,2000,2900) SALAIRE doit être supérieur au maximum de toutes les valeurs.
Donc plus que le maximum (+ de 2900).
WHERE salaire < ALL(1200,1600,2000,2900) SALAIRE doit être inférieur au minimum de toutes les valeurs.
Donc moins que le minimum (- de 1200).

 

Exemple opérateur IN et NOT IN.

 
SQL> SELECT ename, job, sal FROM EMP
  2  WHERE sal IN(1300,1500,2450);

ENAME      JOB              SAL
---------- --------- ----------
CLARK      MANAGER         2450
TURNER     SALESMAN        1500
MILLER     CLERK           1300

SQL> SELECT ename, job, sal FROM EMP
  2  WHERE sal NOT IN(1300,1500,2450);

ENAME      JOB              SAL
---------- --------- ----------
SMITH      CLERK            800
ALLEN      SALESMAN        1600
WARD       SALESMAN        1250
JONES      MANAGER         2975
MARTIN     SALESMAN        1250
BLAKE      MANAGER         2850
SCOTT      ANALYST         3000
KING       PRESIDENT       5000
ADAMS      CLERK           1100
JAMES      CLERK            950
FORD       ANALYST         3000

11 rows selected.

SQL>

 

Exemple opérateur  supérieur >ANY et inférieur <ANY.

 
SQL> SELECT ename, job, sal FROM EMP
  2  WHERE sal > ANY(1300,1500,2450);

ENAME      JOB              SAL
---------- --------- ----------
ALLEN      SALESMAN        1600
JONES      MANAGER         2975
BLAKE      MANAGER         2850
CLARK      MANAGER         2450
SCOTT      ANALYST         3000
KING       PRESIDENT       5000
TURNER     SALESMAN        1500
FORD       ANALYST         3000

8 rows selected.

SQL> SELECT ename, job, sal FROM EMP
  2  WHERE sal < ANY(1300,1500,2450);

ENAME      JOB              SAL
---------- --------- ----------
SMITH      CLERK            800
ALLEN      SALESMAN        1600
WARD       SALESMAN        1250
MARTIN     SALESMAN        1250
TURNER     SALESMAN        1500
ADAMS      CLERK           1100
JAMES      CLERK            950
MILLER     CLERK           1300

8 rows selected.

SQL>

 

Exemple opérateur  supérieur >ALL et inférieur <ALL.

 
SQL> SELECT ename, job, sal FROM EMP
  2  WHERE sal < ALL(1300,1500,2450);

ENAME      JOB              SAL
---------- --------- ----------
SMITH      CLERK            800
WARD       SALESMAN        1250
MARTIN     SALESMAN        1250
ADAMS      CLERK           1100
JAMES      CLERK            950

SQL> SELECT ename, job, sal FROM EMP
  2  WHERE sal > ALL(1300,1500,2450);

ENAME      JOB              SAL
---------- --------- ----------
JONES      MANAGER         2975
BLAKE      MANAGER         2850
SCOTT      ANALYST         3000
KING       PRESIDENT       5000
FORD       ANALYST         3000

SQL>

 

Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
• Update conditionnées de Tables avec MERGE INTO
• Oracle SQL GROUP BY ROLLUP
• Oracle SQL GROUP BY CUBE
• Instruction SQL SELECT FROM WHERE
Par Daniel Roesch - Publié dans : COMMANDES SQL DML-LMD
Ecrire un commentaire - Voir les 0 commentaires
Retour à l'accueil

Rechercher Articles Oracle SQL sur ce Site.

Loading

À lire aussi…

Download PDF Oracle

Rechercher sur le site

Oracle 10G - DBA -

Syndication

  • Flux RSS des articles
Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus - Articles les plus commentés