Aprende a utilizar subconsultas o subquery en SQL
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.
