SQL Subconsulta | |
SQL >
SQL Avanzado >
Subconsulta
Es posible incorporar una instrucción SQL dentro de otra. Cuando esto se hace en las instrucciones WHERE o HAVING, tenemos una construcción de subconsulta. La sintaxis es la siguiente: SELECT "nombre1_columna"
FROM "nombre1_tabla" WHERE "nombre2_columna" [Operador de Comparación] (SELECT "nombre3_columna" FROM "nombre2_tabla" WHERE "Condición"); [Operador de Comparación] podrían ser operadores de igualdad tales como =, >, <, >=, <=. También puede ser un operador textual como "LIKE". La parte en rojo se considera como la "consulta interna", mientras que la parte en verde se considera como la "consulta externa". Utilisons le même exemple que celui que nous avons utilisé pour illustrer les jointures SQL : Table Store_Information
Table Geography
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'); Resultado:
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 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.
|