Subconsultas correlacionadas
Subconsultas correlacionadas não são autocontidas, mas se referem a colunas da consulta pai.
Por exemplo, a consulta "Localizar todas as lojas nas quais as vendas de lacticínios é mais de 10 por cento do total das vendas" pode ser gravada em 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");Essa consulta é uma subconsulta correlacionada porque a consulta interna usa a coluna externa StoreID da tabela Lojas na consulta pai para calcular os totais de laticínios para lojas específicas.
Em muitos casos, também é possível gravar consultas correlacionadas como JOINS. Por exemplo, é possível regravar o exemplo usando um JOIN entre a tabela Lojas e uma subconsulta de tabela em Itens.
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;
Nessa versão, a subconsulta cria uma tabela de resultados como parte da cláusula FROM externa, que então se junta às tabelas Lojas para que os testes de vendas de Laticínios possam ser executados.