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: 646
Kayıt: 25 Şub 2004 10:14
Konum: Tokat

Yürüyen bakiye

Mesaj gönderen csyasar »

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: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Yürüyen bakiye

Mesaj gönderen mrmarman »

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 ....Resim
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: Yürüyen bakiye

Mesaj gönderen denizfatihi »

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: 01 Eki 2007 12:02
Konum: Ankara

Re: Yürüyen bakiye

Mesaj gönderen Battosai »

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: 7586
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Re: Yürüyen bakiye

Mesaj gönderen mussimsek »

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

Kolay gelsin.
csyasar
Üye
Mesajlar: 646
Kayıt: 25 Şub 2004 10:14
Konum: Tokat

Re: Yürüyen bakiye

Mesaj gönderen csyasar »

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