JOIN li yapıda sum tekrarı

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
alguli
Üye
Mesajlar: 35
Kayıt: 04 Nis 2007 01:03

JOIN li yapıda sum tekrarı

Mesaj gönderen alguli »

Kod: Tümünü seç

SELECT DISTINCT(KD.DSTOK_NO), D.STOK_YERI_NO, Y.STOK_YERI_ADI, D.STOK_NO, D.DSTOK_NO, B.BIRIM, S.STOK_KODU, S.STOK_ADI,
       K.STOK_ADI DSTOK_ADI, Div(SUM(D.MIKTAR*D.BIRIMX), B.BIRIMX) MIKTAR
FROM  STOKKADE KD
JOIN STYEDETA D  ON KD.DSTOK_NO=D.DSTOK_NO
JOIN STOKKART S ON D.STOK_NO = S.STOK_NO
JOIN STOKYERI Y ON Y.STOK_YERI_NO = D.STOK_YERI_NO
LEFT OUTER JOIN STOK_BIRIMI(S.STOK_NO,D.BIRIM,1,D.CRC,0) B ON 1 = 1
JOIN STOKKART K ON D.DSTOK_NO = K.STOK_NO
WHERE D.STOK_YERI_NO = 3
AND  KD.ANA_STOK_NO=:DSTOK_NO
GROUP BY KD.DSTOK_NO, D.STOK_YERI_NO, Y.STOK_YERI_ADI, D.STOK_NO, D.DSTOK_NO, D.RAF_NO, B.BIRIM, B.BIRIMX, B.CRC,
      D.DURUM, D.FDURUM, D.OZEL_KOD, S.STOK_KODU, S.STOK_ADI, S.STOK_TIP_NO,
      K.STOK_ADI
Yukarıdaki sorguda STOKKADE içerisindeki tekrarlardan kaynaklı hatalı sonuç elde ediyorum.
Ne kadar kayıt tekrarı var ise, MIKTAR o kadar katlanıyor.
Burada DISTINCT kullanımı mümkün mü, ya da başka bir yolu var mı?
Hayat yalanlarla dolu bir aşktır.
Gerçek aşka erişince o da biter.
Kullanıcı avatarı
alguli
Üye
Mesajlar: 35
Kayıt: 04 Nis 2007 01:03

Re: JOIN li yapıda sum tekrarı

Mesaj gönderen alguli »

Kod: Tümünü seç

SELECT DISTINCT(KD.DSTOK_NO),KD.STOK_ADI,KD.DSTOK_NO, DST.STOK_ADI DST,
(SELECT Div(SUM(D.MIKTAR*D.BIRIMX), B.BIRIMX)
FROM  STYEDETA D
JOIN STOKKART S ON D.STOK_NO = S.STOK_NO
JOIN STOKYERI Y ON Y.STOK_YERI_NO = D.STOK_YERI_NO
LEFT OUTER JOIN STOK_BIRIMI(S.STOK_NO,D.BIRIM,1,D.CRC,0) B ON 1 = 1
JOIN STOKKART K ON D.DSTOK_NO = K.STOK_NO
WHERE D.STOK_YERI_NO = 3 AND D.DSTOK_NO=KD.DSTOK_NO
GROUP BY D.STOK_YERI_NO, Y.STOK_YERI_ADI, D.STOK_NO, D.DSTOK_NO, D.RAF_NO, B.BIRIM, B.BIRIMX, B.CRC,
      D.DURUM, D.FDURUM, D.OZEL_KOD, S.STOK_KODU, S.STOK_ADI, S.STOK_TIP_NO,
      K.STOK_ADI) MIKTAR

FROM STOKKADE KD
JOIN NS_STOKKART DST ON KD.DSTOK_NO=DST.STOK_NO
WHERE KD.ANA_STOK_NO=:DSTOK_NO
Konu yukarıda görüldüğü gibi miktar sub query den çağrılarak çözülmüştür.
Farklı bir önerisi olan varsa onu da deneyebilirim.
Çünkü sub query yavaş çalışıyor.
Kolaylıklar dilerim.
Hayat yalanlarla dolu bir aşktır.
Gerçek aşka erişince o da biter.
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: JOIN li yapıda sum tekrarı

Mesaj gönderen denizfatihi »

Merhaba,

Kayseri Netsim mi database ? :)
Cevapla