FISLER
YIL FISNO TARIH ACIKLAMA
2005 1 01.01.2005 1111
2005 2 02.02.2005 2222
2006 1 01.01.2006 333333
......
FISURUN
YIL FISNO URUNKOD METREKARE
2005 1 1 4
2005 1 2 3
2005 2 1 10
2005 2 3 6
2006 1 3 5
URUNLER
KOD URUN_AD
1 aaaa
2 bbbb
3 ccccc
4 ddddd
sql de şu sekilde
SELECT URUNLER.URUN_AD, SUM(FISURUN.METREKARE)
FROM FISURUN
INNER JOIN URUNLER
ON (FISURUN.URUNKOD = URUNLER.KOD)
INNER JOIN FISLER
ON (FISURUN.FISNO = FISLER.FISNO)
where FISLER.YIL like :paramVar1 AND
FISLER.TARIH >= :paramVar2 AND
FISLER.TARIH <=:paramVar3
group by URUNLER.URUN_AD
belli bir tarih aralıgında işlem gören ürünlerin toplam metrekaresi alinacak.
aaaa 25
bbbb 30
cccc 16
gibi bi sonuc nasıl alinabilir??
Yukarıdaki SQL de sonuclar doğru gelmiyor.
fislerde olmayan fakat ürünler tablosunda olan (örneeğin dddd ürünü) kayıtlarda karsısında bir toplamla geliyor.
SELECT URUNLER.URUN_AD, SUM(FISURUN.METREKARE)
FROM FISURUN
INNER JOIN URUNLER
ON (FISURUN.URUNKOD = URUNLER.KOD)
INNER JOIN FISLER
ON (FISURUN.FISNO = FISLER.FISNO)
where FISLER.YIL = 2005 AND
FISLER.TARIH >= '01.01.2005' AND
FISLER.TARIH <='30.06.2005'
group by URUNLER.URUN_AD
Dikkatimi çeken nokta select ifadesinin devamında ürünler tablosundan ürün adını almanız..bunu join olduğunuzda alıyor zaten..ayrıca ikinci inner joini left outer join olarak deneyin bir de..
select u.urun_ad,sum(fu.metrekare) from fisler f
inner join fisurun fu on fu.yil=f.yil and fu.fisno=f.fisno
inner join urunler u on u.kod=fu.urunkod
group by u.urun_ad