SQL Sous-requête



SQL > SQL Avancé > sous-requête 

Il est possible d’imbriquer une instruction SQL dans une autre. Lorsque cette opération est effectuée sur les instructions WHERE ou HAVING, nous obtenons une construction de sous-requête.

La syntaxe est comme suit:

SELECT "nom de colonne 1"
FROM "nom de table 1"
WHERE "nom de colonne 2" [opérateur de comparaison]
(SELECT "nom de colonne 3"
FROM "nom de table 2"
WHERE "condition"
);

[opérateur de comparaison] peut être un opérateur d’égalité tel que =, >, <, >=, <=. Il peut être aussi un opérateur de texte tel que "LIKE". La partie en rouge est considérée comme "requête interne", alors que la partie en vert est considérée comme "requête externe".

Utilicemos el mismo ejemplo mostrado para ilustrar las uniones SQL:

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 

et en utilisant une sous-requête pour trouver les ventes de tous les magasins dans la région West (Ouest), il faudra utiliser l’instruction SQL suivante :

SELECT SUM(Sales) FROM Store_Information
WHERE Store_Name IN
(SELECT Store_Name FROM Geography
WHERE Region_Name = 'West');

Résultat:

SUM(Sales)
2050

Dans cet exemple, au lieu de joindre directement les deux tables et d’ajouter seulement le montant des ventes des magasins de la région West (Ouest), nous allons d’abord utiliser la sous-requête pour trouver les magasins situés dans la région West (Ouest), puis additionner le montant des ventes de ces magasins.

Dans l’exemple ci-dessus, la requête interne est d’abord exécutée, puis le résultat est envoyé à la requête externe. Ce type de sous-requête est appelé sous-requête simple. Si la requête interne dépend de la requête externe, nous aurons une sous-requête corrélée. Vous trouverez ci-dessous un exemple de sous-requête corrélée :

SELECT SUM(a1.Sales) FROM Store_Information a1
WHERE a1.Store_Name IN
(SELECT Store_Name FROM Geography a2
WHERE a2.Store_Name = a1.Store_Name);

Notez la clause WHERE dans la requête interne, où la condition nécessite une table de la requête externe.

SQL WITH >>

Cette page a été mise à jour pour la dernière fois le 15/10/2023


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