Sum() sorgusu sunucu null dönmesin

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
mero
Üye
Mesajlar: 109
Kayıt: 04 Mar 2005 04:54

Sum() sorgusu sunucu null dönmesin

Mesaj gönderen mero »

S.A Arkadaşlar
stok bilgilerini kaydettiğim "skart" isminde bir tablom var. ve araclardaki ürünleri kaydettiğim "aractaki" ismindede ikinci bir tablom var.
ben elimde hangi üründen toplam ne kadar olduğunu bulmak için şu sorguyu yazdığımda

select s.cinsi,s.top_miktar+(select sum(a.top_miktar) from aractaki a where a.barkod=s.barkod) as toplam
from skart s order by s.cinsi

eğer herhangi bir ürün araçta yok ise sorgu null değer döndürüyor. ve null değer ile toplama yapıldığında sonuc yine null çıkıyor. araçta olmayan ürünlerin toplamını alamıyorum. farklı yöntemler denediğim halde sonuca ulaşamadım. emim ki bu soru daha öncedende sorulmuştur ama bulamadım. kusura bakmayın hakkınızı helal edin.

Şimdiden yardımlarınız için teşekkürler.
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

COALESCE fonksiyonunu kullanın.
ÖRNEK:

Kod: Tümünü seç

SELECT 
  COALESCE(SUM(giris), 0) AS GIRIS, 
  COALESCE(SUM(cikis), 0) AS CIKIS, 
  COALESCE(SUM(giris), 0) - COALESCE(SUM(cikis), 0) AS FARK 
FROM stokislem 
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

Olayı sizin kodunuza uygulamaya kalkıştım ama hangisi doğru çalışıyor diye deneyemedim.
iki farklı kod çıktı,
birinde sum önce birinde COALESCE önce,
siz dener doğrusunu yazarsınız.
1.kod:

Kod: Tümünü seç

select s.cinsi,s.top_miktar+(select COALESCE(SUM(a.top_miktar), 0)) from aractaki a where a.barkod=s.barkod) as toplam 
from skart s order by s.cinsi 
2.kod:

Kod: Tümünü seç

select s.cinsi,s.top_miktar+(select SUM(COALESCE(a.top_miktar), 0)) from aractaki a where a.barkod=s.barkod) as toplam 
from skart s order by s.cinsi 
saygılarımla
mero
Üye
Mesajlar: 109
Kayıt: 04 Mar 2005 04:54

Mesaj gönderen mero »

ilgi ve alaknızdan dolayı çok teşekkür ederim.
formda COALESCE ye rasatlamıştım ama uygulayamamıştım. muhtemelen interbase 6.0 kullandığım için. firebird 1.5 de sorunsuz çalıştı.
Bir şey daha sormak istiyorum normalde interbase kurduğumuz zaman interbase ile birlikte ibconsole da geliyor. firebird kurulumuda bezer hiç bir şey yok bildiğim kadarı ile. firebird ile kullanabileceğim iyi bir arabirim tavsiye edebilirmisiniz?
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Firebird\bin dizini içinde isql komut satırı arayüzü var. Zor gelebilir. O yüzden genelde IBExpert (http://www.ibexpert.com dan ücretsiz sürümünü indirip kullanabilirsin). Yada BDWorkBench, EMS Interbase & Firebird Manager vb diğer arayüzleri kullanabilirsin. Bu tür yazılımların bir çoğu lisans istemekte :cry:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
mero
Üye
Mesajlar: 109
Kayıt: 04 Mar 2005 04:54

Mesaj gönderen mero »

Yardımlarınız için teşekkür ederim.
Allah ebeden yar ve yardımcınız olsun.
Cevapla