31 Temmuz 2007

Union All Kayıt Setinden Gruplamak

Union All ile oluşan kayıt setini bir tablo olarak düşünüp bunun üzerinde gruplama işlemi yapabiliriz. Çeşitli zorunluluklardan veya kötü tasarımdan dolayı raporlama esnasında çeşitli yöntemler bulmak zorunda kalabiliriz.
Örneğin bir satış sitesi olsun ve aynı ürüne ait satış bilgileri farklı 3 tabloda tutulsun. Biz bu 3 tablodan ürün koduyla sorgulama yapıp toplamlarını çekelim. Son olarak da hepsinin toplamını almamız istensin.

select UrunKod,Sum(Fiyat) from
(
select UrunCode,Sum (UrunFiyat) as Fiyat
from table1
where UrunCode=x

union all
Select UrunCode,Sum(UrunFiyat) as Fiyat
From table2
Where UrunCode=x

union all
Select UrunCode,Sum(UrunFiyat) as Fiyat
From table3
Where UrunCode=x
)
group by UrunKod

Bu şekilde tek sorguyla istediğimiz sonucu elde edebiliriz. Hem kod içerisinde ekstra koda ihtiyacımız kalmaz hem de bir miktar performans sağlamış oluruz.

1 yorum:

elae dedi ki...

teşekkürler.. basit anlatımlı oldukça işlevsel bi yazı :)