lunes, 6 de junio de 2016

Receta T-SQL No. 4-6: ¿Cómo Hacer una Selección a Partir de un Conjunto de Resultados?

Índice

1. Introducción
2. Palabras Clave
3. Problema
4. Solución
5. Discusión de la Solución
5.1 Subconsulta
6. Práctica: Selección de un Conjunto de Resultados
7. Conclusiones
8. Literatura & Enlaces

1. Introducción

En esta receta T-SQL se enseña cómo hacer una selección sobre un conjunto de resultados devuelto por una cláusula SELECT. Esto se logra a través del uso de cláusulas SELECT anidadas o subconsultas.

2. Palabras Clave

  • SELECT
  • Subconsulta
  • Tabla derivada

3. Problema

Realizar una selección sobre los resultados devueltos por una selección anidada.

4. Solución

En T-SQL se puede realizar una consulta anidada por medio del uso de una cláusula SELECT que retorna una tabla derivada sobre la que se puede realizar cualquier operación común del lenguaje SQL.

5. Discusión de la Solución

5.1 Subconsulta

Una subconsulta es una sentencia T-SQL que se anida o forma parte de otras sentencias como SELECT, INSERT, UPDATE o DELETE. En el caso de la sentencia SELECT una subconsulta seguiría, en principio, esta sintaxis:

SELECT [listado_campo|S.nombreCampo, ...]
    (SELECT [listado_campos] FROM tabla) AS S
    [WHERE condicion];

Una subconsulta siempre va encerrada entre paréntesis, y dentro de ella también podría declararse otras subconsultas; esto último según la complejidad de la consulta.

6. Práctica: Selección en un Conjunto de Resultados

En el siguiente ejemplo (adaptado de Brimhall (2016)) se obtiene los detalles de orden de venta -Sales.SalesOrderDetail- donde el precio unitario ronde entre 1000 y 2000. Esto formará parte de una subconsulta que se nombrará como d. Luego se hace un INNER JOIN entre esos resultados (subconsulta) y la tabla SalesOrderHeader.

SELECT DISTINCT s.PurchaseOrderNumber AS 'No. Orden Compra'
FROM Sales.SalesOrderHeader s
INNER JOIN (SELECT SalesOrderID
FROM Sales.SalesOrderDetail
WHERE UnitPrice BETWEEN 1000 AND 2000
) d
ON s.SalesOrderID = d.SalesOrderID;

La subconsulta empieza a partir de la apertura de y cierre de paréntesis al interior de la consulta general.

Estos son los resultados (reducidos) de la ejecución de la consulta:
Subconsulta con INNER JOIN
Figura 1. Subconsulta con INNER JOIN.

7. Conclusiones

Se enseñó cómo crear una tabla derivada a través del uso de una consulta anidada o subconsulta. Se entendió además que el nivel de anidamiento o número de subconsultas depende la complejidad de la consulta. Además, que una subconsulta siempre está encerrada entre paréntesis.

La próxima receta T-SQL enseña cómo comprobar la existencia de un registro.

8. Literatura & Enlaces

Brimhall, J., Dye, D., Gennick, J., Roberts, A., Sheffield, W. (2012). SQL Server 2012 T-SQL Recipes - A Problem-Solution Approach. United States: Apress.
Subquery Fundamentals (2016, junio 6). Recuperado desde: https://technet.microsoft.com/en-us/library/ms189575%28v=sql.105%29.aspx?f=255


V

No hay comentarios:

Publicar un comentario

Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.