Subconsultas en SQL Server

En SQL Server podemos realizar subconsultas o subquerys, que no es más que una consulta dentro de otra, ya sea un SELECT, UPDATE, DELETE u otra subconsulta. Las subconsultas pueden ser “self-contained”, o sea independientes de una consulta externa o pueden ser “correlated”, dígase, que tienen referencia a una columna de una tabla de la consulta externa.

Las subconsultas pueden retornar resultados en diferentes formas. Pueden retornar un solo valor, múltiples valores o valores de tabla, en este articulo nos enfocaremos en las dos primeras formas.

Subconsultas independientes (Self-Contained Subqueries)

Estas subconsultas no tienen dependencia de la consulta externa, por lo que se pueden ejecutar de manera independiente. Esto hace que la solución de problemas sea más fácil comparado con las consultas correlacionadas.

Veamos un ejemplo utilizando la base de datos de Northwind y para este caso la tabla Employees (empleados).

Subconsulta-independiente-multiples-valores

Subconsulta independiente – retorna múltiples valores

Podemos ver en el GIF nuestra subconsulta que está dentro de paréntesis, esta se puede ejecutar de manera independiente de nuestra consulta externa y nos retorna un resultado de múltiples valores, el cual es utilizado por la consulta externa para obtener el resultado final.

Aquí otro ejemplo de una subconsulta independiente, pero esta vez devuelve un solo valor.

Subconsulta-independiente -retorna-solo-valor

Subconsulta independiente – retorna valor único

 

Subconsultas correlacionadas (Correlated Subqueries)

Una subconsulta correlacionada, como había indicado hace referencia a una columna de una tabla de la consulta externa.

En este ejemplo, buscaremos los productos que se vendieron (esta información está en la columna UnitPrice de la tabla [Order Details]) a un precio diferente al que se definió (el cual está definido en la columna del mismo nombre, pero en la tabla Products)

 

Subconsulta-correlacionado-retorna-multiples-valores

Subconsulta correlacionada – retorna múltiples valores

Podemos ver en la consulta que al intentar ejecutar la consulta que está entre paréntesis, o sea, la consulta interna, esta nos lanza un error, ya que la columna OD.UnitPrice indicada pertenece a la tabla externa. Para que la subconsulta distinga entre las dos columnas indiqué un alias a cada tabla, OD a la tabla [Order Details] y P a la tabla Products.

Un punto a tomar en cuenta es que debemos utilizar los operadores lógicos y de comparación adecuados, para las aquellas subconsultas que retornan más de un valor podemos utilizar IN, EXISTS y cualquier otro operador lógico que acepte más de un valor, mientras que para las que devuelven un solo valor podemos utilizar = (igual a), > (mayor que), < (menor que), >= (mayor igual que), <= (menor igual que), <> (diferente de) e incluso EXISTS (Especifica una subconsulta para probar la existencia de filas.)

Si tienes alguna duda o sugerencia déjala en los comentarios

¡Saludos!

Anuncios

2 comentarios en “Subconsultas en SQL Server

  1. Pingback: Tablas derivaras en SQL Server – Team Geek RD

  2. Pingback: Tablas derivaras en SQL Server - Robert Lluberes

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s