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_NameSalesTxn_Date
Los Angeles150005-Jan-1999
San Diego25007-Jan-1999
Los Angeles30008-Jan-1999
Boston70008-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 EXISTS >>



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


SQL Avancé
SQL UNION
SQL UNION ALL
SQL INTERSECT
SQL MINUS
SQL Sous-requête
SQL EXISTS
SQL CASE
SQL Rang
SQL Médiane
SQL Exécution totale
SQL Pourcentage du total
SQL Pourcentage du total cumulatif




Plan du site