Una subconsulta es una declaración SQL que tiene otra consulta SQL incrustada en la cláusula WHERE o HAVING.
Sintaxis
La sintaxis de una subconsulta en SQL cuando el subquery o subconsulta forma parte de la condición WHERE es la siguiente:
SELECT "column_name1"
FROM "table_name1"
WHERE "column_name2" [Operador de Comparación]
(SELECT "column_name3"
FROM "table_name2"
WHERE "condición");
[Operador de comparación] podría ser operadores de igualdad como =,>, <,> =, <=. También puede ser un operador de texto como "LIKE". La parte entre paréntesis se considera como la "consulta interna, subconsulta o subquery", mientras que la parte que no está entre paréntesis se considera como la "consulta externa".
Ejemplos
Usamos la tabla Products de base de datos Northwind que hemos estado utilizando y la pueden descargar en esta liga.
Tabla Products:
|
|
Como la tabla es muy grande la divide en dos, en total tiene 77 registros.
La otra tabla es Categories:
CategoryID |
CategoryName |
Description |
1 |
Beverages |
Soft drinks, coffees, teas, beers, and ales |
2 |
Condiments |
Sweet and savory sauces, relishes, spreads, and seasonings |
3 |
Confections |
Desserts, candies, and sweet breads |
4 |
Dairy Products |
Cheeses |
5 |
Grains/Cereals |
Breads, crackers, pasta, and cereal |
6 |
Meat/Poultry |
Prepared meats |
7 |
Produce |
Dried fruit and bean curd |
8 |
Seafood |
Seaweed and fish |
Subconsulta o subquery
Para usar una subconsulta para encontrar los productos de las categorías Beverages, usamos la siguiente declaración SQL:
SELECT ProductID, ProductName, CategoryID FROM Products where CategoryID in (SELECT CategoryID FROM Categories where CategoryName='Beverages')
Resultado
ProductID |
ProductName |
CategoryID |
1 |
Chai |
1 |
2 |
Chang |
1 |
24 |
Guaraná Fantástica |
1 |
34 |
Sasquatch Ale |
1 |
35 |
Steeleye Stout |
1 |
38 |
Côte de Blaye |
1 |
39 |
Chartreuse verte |
1 |
43 |
Ipoh Coffee |
1 |
67 |
Laughing Lumberjack Lager |
1 |
70 |
Outback Lager |
1 |
75 |
Rhönbräu Klosterbier |
1 |
76 |
Lakkalikööri |
1 |
En este ejemplo, en lugar de unir las dos tablas directamente con un JOIN y luego obtener solo las que cumplen con la condición, primero usamos la subconsulta para averiguar qué Id tiene la categoría de Beverages, y obtenemos los productos que cumplen con esa categoría en particular.