Sum da join yapınca sonuc iki alanın carpımı oluyor.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Sum da join yapınca sonuc iki alanın carpımı oluyor.

Mesaj gönderen musti »

s.a.
Enteresan bir sQL sonucu donuyor anlayamadım
yorumlayabilirmisiniz lutfen


select M.FISNO,SUM(M.GENEL_TOPLAM)from master M
GROUP BY M.FISNO

A0001 ----- 23
A0002 ----- 3
A0003 ------6
A0004 ------32



burda sonuc dogru sorun yok ama detail ekledigim zaman


select M.FISNO,,SUM(M.GENEL_TOPLAM)GENEL,SUM(D.MIKTAR)MIKTAR from master M, detay D
WHERE M.FISNO=D.FISNO
GROUP BY M.FISNO


A0001 ----- 23--23
A0002 ----- 3---3
A0003 ------30--5 //// Neden
A0004 ------64 --4 //// neden


sonucundata genel farklı sekline geliyor neden boyle olsunki
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Sorgunuzda "Join" ifadesini göremedim :roll:
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Re: Sum da join yapınca sonuc iki alanın carpımı oluyor.

Mesaj gönderen naile »

Çünkü masterdaki aynı kayıt detayadaki kayıt sayısı dönüyor. Bunu detaydaki miktarı iç select ile çözebilirsiniz.

Kod: Tümünü seç

select  M.FISNO,SUM(M.GENEL_TOPLAM)GENEL,
(select SUM(D.MIKTAR) from detay where detay.FISNO=M.FISNO) AS Miktar FROM master M
GROUP BY M.FISNO

Kullanıcı avatarı
musti
Üye
Mesajlar: 527
Kayıt: 11 Tem 2005 09:44

Mesaj gönderen musti »

sayın naile,
Tamam boyle calisti.
:( bu sefer baska alanlara gore gruplayamayıyorum ille fisno diyor.
ornegin group by kod1
kod1 detay table de olmayan bir alan. iki dosyayı fisno birlestiriyor.



Bu mantigi benim kurmam icin nasil bir kaynak tavsiye edersiniz.
(Turkce)

ilginiz ve bilgilendirdiginiz için tks ederim.
allah razı olsun
Kullanıcı avatarı
osmantaskiran
Üye
Mesajlar: 34
Kayıt: 17 Nis 2004 09:27
İletişim:

Mesaj gönderen osmantaskiran »

Group by kullandığında select te kullandığın ve sum ifadesi olmayan alanların her birini group by 'a da eklemen lazım. Aksi takdirde hata alırsın.
Cevapla