Vous êtes sur la page 1sur 2

TRANSACT-SQL

SUB - CONSULTAS ( SU B - QUERIES )


Las sub-consultas (Sub-Queries) son sentencias SELECT mezcladas o combinadas, una formando parte de la
otra. En T-SQL los sub-queries pueden están tanto en la parte WHERE como en el FROM y en el SELECT.

Una Sub-Consulta es ejecutada por cada fila que sale de la sentencia SELECT donde esté contenida.

OPERADORES
Los operadores determinan el tipo de evaluación que se hace sobre el resultado de la sub consulta.

• IN. Evalúa que un determinado valor exista dentro de la lista retornada por la sub consulta.
• SOME. Evalúa que un determinado valor sea >,=,< o <> que algunos de los valores en la lista devuelta
por la sub consulta.
• ANY. Evalúa que un determinado valor sea >,=,< o <> que cualquiera de los valores en la lista devuelta
por la sub consulta.
• ALL. Evalúa que un determinado valor sea >,=,< o <> que todos y cada uno de los valores en la lista
devuelta por la sub consulta.
• EXISTS. Para evaluar contra la existencia de registros la sub consulta. Por lo regulan aplica cuando se
usa JOINs.

SELECT * FROM pagos WHERE idEmp IN ( Select IdEmp From empleados where sueldo > 1000)
Mostrar todos los pagos de los empleados que se encuentren en el listado que saca el sub-query.

SELECT * FROM empleado WHERE sueldo > ANY ( Select sueldo From empleado where tipo = ‘A’)
Mostrar los empleados cuyo sueldo es mayor que cualquier de los sueldos extraídos en la sub consulta. De igual manera
se pudo haber utilizado la clausula SOME. A diferencia de estas la cláusula ALL es para cumplir con todos los valores de la
lista.

SQL Server – Carlos Caraballo Page 1


C O N SU L TA S C O R R E L A CI O NA D A S
La consulta incluida dentro otra consulta puede ser enlazada con las tablas de la principal, tanto para fines de
evaluación en la clausula WHERE como también para crear una especie de tabla temporal con la que se
establece una relación.

JOIN S U B - C O N S U L T A E N L A C L Á U S U L A WHERE.
SELECT v.*
FROM vendedores v
WHERE NOT EXISTS ( Select * From Ventas Where ventas.idVendedor = v.idVendedor )
Muestra todos los vendedores que tengan alguna venta. Mire que para validar la existencia se hace una especie de JOIN en
la sub-consulta para que solo se tomen en cuenta los vendedores que salen de la consulta principal.

S U B - C O N S U L T A E N E L FR OM
Se genera un resultado temporal que es tomado como si fuera una tabla para fines de hacer JOINS.

SELECT v.* , c.total


FROM vendedores v ,
( Select idVendedor, SUM(monto) as total FROM comisiones GROUP BY idVendedor) c
WHERE v.idVendedor = c.idVendedor
Muestra todos los vendedores y su monto total en comisiones. Notar que la tabla c es realmente el resultado de una sub-
consulta.

SUB CONSULTA EN LA LISTA DE CAMPOS


La sub-consulta en la lista de campos permite incluir en la lista campos que pudieran ser complicados de
extraer con simples JOINS o grupos.

SELECT v.* , ( Select SUM(monto) as total from comisiones c Where c.idV endedor = v.idVendedor )
FROM vendedores v
Muestra todos los vendedores y su monto total en comisiones. El campo total es extraído de una relacionada al Query
principal.

R EFERENCIAS
http://msdn.microsoft.com/es-es/library/ms189773.aspx

SQL Server – Carlos Caraballo Page 2

Vous aimerez peut-être aussi