Subconsultas correlacionadas

Las subconsultas correlacionadas no son autocontenidas, pero hacen referencia a columnas de la consulta padre.

Por ejemplo, la consulta, “Encontrar todas las tiendas donde las ventas de productos lácteos sea más del 10 por ciento de las ventas totales” se puede escribir en SQL como:
SELECT StoreID FROM Stores S
WHERE S.TotalSales*0.1 <
(SELECT SUM(1.Price) FROM Item i
WHERE S.StoreID = I.StoreId and I.ItemType = "Dairy");

Esta consulta es una subconsulta correlacionada porque la consulta interna utiliza la columna externa StoreID de la tabla Stores de la consulta padre para calcular los totales de lácteos para las tiendas específicas.

En muchos casos, también puede escribir consultas correlacionadas como JOINS. Por ejemplo, puede reescribir el ejemplo utilizando JOIN entre la tabla Stores y la subconsulta de tabla en Items.
SELECT S.StoreId FROM Stores S,
(SELECT I.StoreId, Sum(Price) DairySales FROM Items I
WHERE I.ItemType = "Dairy" GROUP BY I.StoreId) D
WHERE S.StoreId = D.StoreId AND S.TotalSales *0.1 < D.DairySales;

En esta versión, la subconsulta crea una tabla de resultados como parte de la cláusula FROM externa que se une con las tablas Stores para que se puedan realizar las pruebas de ventas de productos lácteos.