Bu blogumda alt sorgularla ilgili birkaç örnek vereceğim. Örnek olarak NORTHWIND database'ini kullanıyorum.
Self-Contained Subqueries
Örneğin, Products tablosundan birim fiyatı (UnitPrice) en düşük olan ürünü veya ürünleri sorgulamak istiyorum:
select * from Products
where UnitPrice = (select min(UnitPrice) from Products)
bir diğer örnek, kategorisi 'Beverages' olan ürünlerin listesi
select * from Products
where CategoryID = (select CategoryID from Categories where CategoryName='Beverages')
Correlated Subqueries
Bir diğer alt sorgu çeşidi iste İLİŞKİLİ ALT SORGULAR.
İlişkili alt sorgular özellikle gruplamada çok işimize yarar.
Örneğin Products tablosunda her bir kategorinin minimum birim fiyatlı ürününü sorgulayalım.
select ProductID,ProductName,CategoryID,UnitPrice
from Products as p1
where UnitPrice in (select min (UnitPrice)
from Products as p2 where p1.CategoryID = p2.CategoryID)
Bu yapıda öncelikle dıştaki sorgu çalıştırılır. Sonra her bir satır tek tek iç sorguda tekrar çalıştırılır.
Yukarıdaki örneği biraz daha zorlaştıralım. Bu kez her bir kategori için minimum birim fiyatlı ürünleri çekelim.
Fakat bunu yaparken tekrar eden ürünlerde gelsin yani birim fiyatı aynı olan ürünlerde listelensin.
select ProductID,ProductName,CategoryID,UnitPrice
from Products as p1
where UnitPrice in (
select top (3) UnitPrice
from
(
select distinct (UnitPrice) from Products as p2 where p1.CategoryID = p2.CategoryID
) as tbl order by tbl.UnitPrice asc
)
order by p1.CategoryID asc
