Yürüyen bakiye

Diğer veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
csyasar
Üye
Mesajlar: 644
Kayıt: 25 Şub 2004 10:14
Konum: Tokat

Yürüyen bakiye

Mesaj gönderen csyasar » 01 Haz 2015 07:32

Merhaba;

Mysql 5 ile yürüyen bakiye sorgusu yapmak istediğimde bir hata ile karşılaşıyorum. Örneğin 10 tane hareket varsa ve bunların tamamında borç veya alacak alanı değersiz (null) ise bakiye alanı toplanmıyor. eğer alacak kısımlarının tamamına veya birine null değer yerine 0 koyarsanız sorunsuz çalışıyor.

yürüyen bakiye kodum şöyle:

Kod: Tümünü seç

select ch.id, ch.cariid, ch.tarih, ch.aciklama, ch.borc, ch.alacak, (select sum(borc)-sum(alacak) from carihareket bky 
where bky.tarih<=ch.tarih and id>0 and cariid=219 order by tarih asc) as bakiye from carihareket ch
 where id>0 and cariid=219 order by tarih asc

burada sıfır varken hesaplanmış hali:
http://hizliresim.com/yMGvB7


sıfır yokken hesaplanmış hali:
http://hizliresim.com/yMGvB7

sorunu nasıl çözeceğim konusunda fikri olan var mı?

Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4731
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Re: Yürüyen bakiye

Mesaj gönderen mrmarman » 01 Haz 2015 08:50

Hocam IFNULL( alanadi, 0) AS alanadi şeklinde kullanırsan NULL alanları 0'a çekersin Bu da işini sorunsuz yapmana olanak sağlayacaktır.

Kod: Tümünü seç

select sum( IFNULL(borc,0) )-sum( IFNULL(alacak,0) ) ...
şeklinde bir dener misiniz ?
Resim Resim

denizfatihi
Üye
Mesajlar: 234
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: Yürüyen bakiye

Mesaj gönderen denizfatihi » 02 Haz 2015 11:55

Mysql ve kendine uyarlarsın,

Kod: Tümünü seç

SELECT SICIL,HAKEDIS,HIZIN,IZIN as KIZIN,
(SELECT SUM(COALESCE(HIZIN, 0)) - SUM(COALESCE(IZIN, 0))  FROM YILIZINHARE b 
WHERE b.HAKEDIS <= a.HAKEDIS AND a.SICIL=B.SICIL and B.KOD=1) AS BAKIYE 
FROM YILIZINHARE a
WHERE  SICIL =:SIC AND KOD=1
ORDER BY HAKEDIS DESC

Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 30 Eyl 2007 11:02
Konum: Ankara

Re: Yürüyen bakiye

Mesaj gönderen Battosai » 02 Haz 2015 05:05

SQL ayarlanırda, sizin tablo yapınız asıl sorun. Sayısal alanlar için "null" değeri kayıt ettirmeyin. Default sıfır yapın. Böylece ekstradan koda ekleme yapmanız gerekmez.

Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7500
Kayıt: 09 Haz 2003 11:26
Konum: İstanbul
İletişim:

Re: Yürüyen bakiye

Mesaj gönderen mussimsek » 03 Haz 2015 09:02

@Battosai, haklı. Tutarsal alanların hepsin de, default 0 yaparsanız sorun çözülür.

Kolay gelsin.

csyasar
Üye
Mesajlar: 644
Kayıt: 25 Şub 2004 10:14
Konum: Tokat

Re: Yürüyen bakiye

Mesaj gönderen csyasar » 04 Haz 2015 02:50

Battosai yazdı:SQL ayarlanırda, sizin tablo yapınız asıl sorun. Sayısal alanlar için "null" değeri kayıt ettirmeyin. Default sıfır yapın. Böylece ekstradan koda ekleme yapmanız gerekmez.
bir yazılım satın aldığınızı ve mesajımdaki resimdeki gibi bir hareket listenizin olduğunu düşünün. bi ton sıfırın olduğu bir listeyi okumak zorlaşıyor. onun için 0 olmasını çok tercih etmiyorum.

Cevapla