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
0 Comentarios
Enviame un comentario