Forum

sqlserverda sum işl...
 
Bildirimler
Hepsini Temizle

sqlserverda sum işleminde hata

4 Yazılar
2 Üyeler
0 Reactions
795 Görüntüleme
(@mehmettilkioglu)
Gönderiler: 7
Active Member
Konu başlatıcı
 

select f.Id, f.firmaad, sum(o.tlodeme)as tl,sum (o.euroodeme)as euro,sum (o.dolarodeme)as dolar,sum(g.tlodeme) as tlodenen from odemeler o inner join firma_kayit f on o.firmaId=f.Id inner join gelenodeme g on f.Id=g.firmaId where o.durum='veresiye' group by f.Id ,f.firmaad

 

yukardaki sorguda g.tlodeme 2 veya 3 katı çıkıyor düz inner joinli sorgu çektigimde şunu görüyorum her seferinde o id kaç satır varsa okaradar topluyor yan, 1nolu ıd 2 alış veriş yapmış gelen odemesinde bir satır ödeme var fakat alışveriş sayısı kadar satırı topluor 10 lira ödeme yaptıysa sum olunca okardar toluyor yardımınızı bekliyorum


 

 

 

 
Gönderildi : 30/09/2013 00:46

(@YasarKOZAN)
Gönderiler: 44
Trusted Member
 

Anladığım kadarıyla ödemeler tablosunda bir değer birden fazla bulunurken, aynı değer gelen ödeme tablosunda sadece bir satıra topluca yazılmış durumda.

İinner join işlemindeki kartezyen çarpım sonucu ödemeler tablosunda bulunan değer sayısı karşılığı, gelenödeme tablosunda aynı ıdye sahip ödemeyi, ödemeler tablosundaki sayı kadar tekrar çekiyor. Yine bütün tablolarda firmaıd dğerini tutan sutünlar mevcut. Bu karışıklığı gidermek için hepsinde olan firmaıd yerine sırası ile birinde olup diğerinde olmayan şeklinde atlamalı bir birleştirme yaparsanız düzelir sonuç.

 

Şöyle açılyayım durumu : Ödemelerde bulunan firma ıdsi farzedelim 3 adet aynı firma için, aynı firamdan 3 adet ödeme gelecek fakat bu firma ıd gelen ödeme tablosunda sadece bir tane olarka bulunuyor. siz sum() ile toplam yaparken inner join ile birleştiriyorsunuz buda aynı olans atırların birleşmesi demek.

Yani 3 defa aynı firmaıdye rastladığı için her seferinde gelenödemeler tablosunda aynı firmaıd ile bulunan değeri toplama ekliyor. O yüzden bir gelenödeme ödemelerdeki aynı firmaıdye sahip satır sayısı kadar ekleniyor. Bunu firmaıd üzerinden değilde iki satır içinde tek değer içeren bir satır üzerinden yaparsanız sorun düzelir. Öyle bi imkan yoksa tavsiyem gelenödemeleri ayrı olarak toplamanız ve sonuca eklemeniz olacaktır.

 

 

 
Gönderildi : 30/09/2013 01:38

(@mehmettilkioglu)
Gönderiler: 7
Active Member
Konu başlatıcı
 

valla daha kod olarak yardımcı olursanız sevinirim iki ayrı tablo olarak yaparsam işler dahada karışıyor tek sorgu ile halledebilirsem benim için daha iyi

 
Gönderildi : 30/09/2013 22:51

(@YasarKOZAN)
Gönderiler: 44
Trusted Member
 

valla daha kod olarak yardımcı olursanız sevinirim iki ayrı tablo olarak yaparsam işler dahada karışıyor tek sorgu ile halledebilirsem benim için daha iyi

 

Tablolar ve anahtar değerler hakkında daha fazla ayrıntı verirseniz yardımcı olmaya çalışayım kod bazında

 
Gönderildi : 01/10/2013 01:00

Paylaş: