Este artículo explica sobre subconsulta no correlacionada y correlacionada en SQL Server (Transact-SQL) con un ejemplo.
Subconsulta correlacionada
Una subconsulta correlacionada es la subconsulta cuyo valor depende de la consulta externa. La subconsulta correlacionada se ejecuta repetidamente, una vez por cada fila seleccionada por la subconsulta.
En subconsulta correlacionada, la subconsulta se ejecutará una vez y sustituirá el valor resultante en la cláusula WHERE de la consulta externa.
Nota: No se puede ejecutar subconsulta correlacionada independientemente de la consulta externa.
Vamos a crear dos tablas para entender subconsulta correlacionada en SQL Server (T-SQL).
Tabla de Productos:
1
2
3
4
5
6
7
8
9
10
11
|
Crear tabla ProductsTable
(
ID int Primary Key,
Nombre nvarchar(50),
Precio int
Detalles de tipo nvarchar(150)
)
Insertar en los valores de la tabla de productos (1, ‘Laptop’, 30000, ‘Una computadora portátil para usuarios domésticos’)
Insertar en los valores de la tabla de productos (2, ‘Lavadora’, 20000, ‘Máquina de carga frontal de color blanco ‘)
Insertar en los valores de la tabla de productos (3, ‘TV’, 22000, ‘TV LED HD de 32 pulgadas’)
Insertar en valores de tabla de productos (4, ‘Nevera’, 30000, ‘nevera de doble puerta de 190 litros’)
|
:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
Crear tabla SaleRecordTable
(
Id int Clave Primaria de Identidad,
ProductID int
SoldQuantity de tipo int
SaleDate Date
)
Insert into SaleRecordTable Values (2, 3, ’10-10-2016′)
Insert into SaleRecordTable Values (3, 5, ’10-10-2016′)
Insert into SaleRecordTable Values (2, 2, ’11-10-2016′)
Insert into SaleRecordTable Values (4, 6, ’11-10-2016′)
Insert into SaleRecordTable Values (2, 6, ’12-10-2016′)
Insert into SaleRecordTable Values (4, 6, ’13-10-2016′)
|
La consulta recuperará el producto total vendido de la tabla de registros de ventas. En subconsulta, los datos totales del producto vendido se recuperan para cada id de producto de la tabla de productos.
1
2
3
4
|
–correlated subquery
Select Name,
(Select SUM(SoldQuantity) from SaleRecordTable where ProductId = ProductsTable.ID) como»Cantidad total Vendida»
de ProductsTable
|
Salida:
Si ejecuta la subconsulta de forma independiente, obtendrá el siguiente error.
Subconsulta no correlacionada
Una subconsulta no correlacionada es una subconsulta que es independiente de las consultas externas. Puede ejecutar subconsulta no correlacionada independientemente de la consulta externa.
1
2
3
4
|
–Non correlated query
Select ID, Name, Details
From ProductsTable
Where ID = (Select ProductID from SaleRecordTable Where SaleDate =’10-10-2016′ AND ProductID =2)
|
Salida:
Si ejecuta la subconsulta de forma independiente, esta vez no obtendrá ningún error. La salida será:
Espero que este artículo le haya ayudado a comprender subconsulta correlacionada y no correlacionada en SQL Server. Por favor, publique sus comentarios para consultas y comentarios. Gracias por leer.
- Bio
- Latest Posts
Últimas publicaciones de Gyanendu Shekhar (ver todas)
- Uso de material transparente en Unity 3D – 8 de febrero de 2021
- Introducción al kit de herramientas de interfaz de usuario : Tutorial de Unity 3D – 30 de diciembre de 2020
- Uso de eventos en Unity 3D – 2 de mayo de 2020