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:

ProductID

ProductName

CategoryID

1

Chai

1

2

Chang

1

3

Aniseed Syrup

2

4

Chef Anton's Cajun Seasoning

2

5

Chef Anton's Gumbo Mix

2

6

Grandma's Boysenberry Spread

2

7

Uncle Bob's Organic Dried Pears

7

8

Northwoods Cranberry Sauce

2

9

Mishi Kobe Niku

6

10

Ikura

8

11

Queso Cabrales

4

12

Queso Manchego La Pastora

4

13

Konbu

8

14

Tofu

7

15

Genen Shouyu

2

16

Pavlova

3

17

Alice Mutton

6

18

Carnarvon Tigers

8

19

Teatime Chocolate Biscuits

3

20

Sir Rodney's Marmalade

3

21

Sir Rodney's Scones

3

22

Gustaf's Knäckebröd

5

23

Tunnbröd

5

24

Guaraná Fantástica

1

25

NuNuCa Nuß-Nougat-Creme

3

26

Gumbär Gummibärchen

3

27

Schoggi Schokolade

3

28

Rössle Sauerkraut

7

29

Thüringer Rostbratwurst

6

30

Nord-Ost Matjeshering

8

31

Gorgonzola Telino

4

32

Mascarpone Fabioli

4

33

Geitost

4

34

Sasquatch Ale

1

35

Steeleye Stout

1

36

Inlagd Sill

8

37

Gravad lax

8

38

Côte de Blaye

1

 

ProductID

ProductName

CategoryID

39

Chartreuse verte

1

40

Boston Crab Meat

8

41

Jack's New England Clam Chowder

8

42

Singaporean Hokkien Fried Mee

5

43

Ipoh Coffee

1

44

Gula Malacca

2

45

Rogede sild

8

46

Spegesild

8

47

Zaanse koeken

3

48

Chocolade

3

49

Maxilaku

3

50

Valkoinen suklaa

3

51

Manjimup Dried Apples

7

52

Filo Mix

5

53

Perth Pasties

6

54

Tourtière

6

55

Pâté chinois

6

56

Gnocchi di nonna Alice

5

57

Ravioli Angelo

5

58

Escargots de Bourgogne

8

59

Raclette Courdavault

4

60

Camembert Pierrot

4

61

Sirop d'érable

2

62

Tarte au sucre

3

63

Vegie-spread

2

64

Wimmers gute Semmelknödel

5

65

Louisiana Fiery Hot Pepper Sauce

2

66

Louisiana Hot Spiced Okra

2

67

Laughing Lumberjack Lager

1

68

Scottish Longbreads

3

69

Gudbrandsdalsost

4

70

Outback Lager

1

71

Flotemysost

4

72

Mozzarella di Giovanni

4

73

Röd Kaviar

8

74

Longlife Tofu

7

75

Rhönbräu Klosterbier

1

76

Lakkalikööri

1

77

Original Frankfurter grüne Soße

2

 

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.
 

Artículos relacionados
Qué es un Trigger o Desencadenador
Qué es un Trigger o Desencadenador

Un trigger o desencadenador en una Base de dat

¿Cómo cargar una base de datos desde un script slq en SQL Server?
¿Cómo cargar una base de datos desde un script slq en SQL Server?

En este post, aprender&aacute; c&oacute;mo cre

¿Cómo eliminar las etiquetas html de una cadena en SQL?
¿Cómo eliminar las etiquetas html de una cadena en SQL?

En este art&iacute;culo pondr&eacute; un peque

0 Comentarios
Enviame un comentario