Subqueries etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Subqueries etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

11 Mayıs 2014 Pazar

ALT SORGULAR

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