Subquery sorgu içerisinde sorgu demektir. İçteki alt sorgu problemin bir kısmının çözümünü verir, kalan kısmını ana sorgu halleder.
İkiye ayrılır.
1)Basic Subquery
Ana sorgudan bağımsız alt sorgulardır
Eğer subquery tek bir yanıt döndürüyorsa where içerisinde ‘=’ ile kullanılabilir.
Eğer subquery bir kolonda birden fazla değer dönüyorsa where içerisinde ‘in’ ile kulanılabilir.
Eğer tablo dönüyorsa bu alt sorguya bir tablo adı vererek, tablo olarak kullanılabilir. Yani join’leyebiliriz
2)Correlated Subquery
Ana sorguyla bağlantılı alt sorgulardır.
Basic Subquery Örnekleri
--Ortalama ücretin üzerinde yer alan ürünler
select ProductName,UnitPrice from Products where UnitPrice>(select avg(UnitPrice) from Products)
--select avg(UnitPrice) from Products --UnitPrice'ın ortalaması

--Çalışanlarımın ortalama yaşının üzerinde olan çalışanlarım
select FirstName+' '+LastName from Employees
where DATEDIFF(YEAR,BirthDate,GETDATE()) > (select AVG(DATEDIFF(YEAR,BirthDate,GETDATE())) from Employees)
--(select 2019-avg(year(BirthDate)) from Employees)

2) Correlated Subquery Örnekleri
--Siparişlerimi Id'ler ve siparişin toplam tutarı olarak listeleyiniz
select o.OrderID, (select sum(Quantity*UnitPrice) from [Order Details] od where od.OrderID=o.OrderID) as Tutar
from Orders o order by Tutar desc


Yorum bırakın