SQL EXISTS



SQL > SQL Avancé > Exists 

Dans la section précédente, nous avons utilisé IN pour mettre en liaison la requête interne et la requête externe dans une instruction de sous-requête. L’utilisation de IN n’est pas la seule manière de procéder ; il est aussi possible d’utiliser plusieurs opérateurs tels que >, <, ou =. EXISTS est un opérateur spécial que nous verrons dans cette section.

EXISTS teste simplement si la requête interne retourne une ligne. Si elle le fait, la requête externe peut s’exécuter. Sinon, la requête externe ne s’exécutera pas, et l’instruction SQL entière ne retournera aucun résultat.

La syntaxe pour EXISTS est :

SELECT "nom de colonne 1"
FROM "nom de table 1"
WHERE EXISTS
(SELECT *
FROM "nom de table 2"
WHERE "condition");

Notez qu’au lieu de l’étoile *, vous pouvez sélectionner une ou plusieurs colonnes dans la requête interne. L’effet sera identique.

Utilisons les mêmes tables comme exemple :

Table Store_Information
 Store_Name  Sales  Txn_Date 
 Los Angeles 1500  05-Jan-1999 
 San Diego 250  07-Jan-1999 
 Los Angeles 300  08-Jan-1999 
 Boston 700  08-Jan-1999 

Table Geography
 Region_Name   Store_Name 
 East   Boston 
 East   New York 
 West   Los Angeles 
 West   San Diego 

définissons la requête SQL suivante :

SELECT SUM(Sales) FROM Store_Information
WHERE EXISTS
(SELECT * FROM Geography
WHERE Region_Name = 'West');

Le résultat obtenu sera le suivant :

SUM(Sales)
2750

A première vue, cette opération peut paraître un peu confuse, car la sous-requête inclut la condition [Region_Name = 'West'], la requête n’a pas encore ajouté les magasins pour toutes les régions. Par une analyse plus approfondie, nous parvenons à la condition suivante : puisque la sous-requête retourne plus de 0 ligne, la condition EXISTS est vraie, et la condition placée au sein de la requête interne n’affecte pas le mode d’exécution de la requête externe.

SQL CASE >>

Cette page a été mise à jour pour la dernière fois le 18/06/2022


Copyright © 2024   1keydata.com   Tous droits réservés