İki ayrı tablodaki borc sutunları tek sql kodu ile nasıl top

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Metinx
Üye
Mesajlar: 54
Kayıt: 04 Eki 2007 01:39

İki ayrı tablodaki borc sutunları tek sql kodu ile nasıl top

Mesaj gönderen Metinx »

Merhaba arkadaşlar, değerli delphi türkiye üyelerine günaydınlar...

Benim bir sorunum var. Mesela alis ve satis tablom var bu iki tabloda da borc sütunu var. ben sql yardımıyla sum ile bu iki alanı toplatmak istiyorum.

Örneğin: SELECT SUM(BORC) FROM satis,alis diyorum eğer null alan yoksa yani satista borc toplamı diyelim 10,00 ytl iken alista borc alanında hiç kayıt yoksa dolayısı ile alis tablosunun borc alanı null değerde o zaman toplam çıkmıyor.

Bu konuda yardımcı olabilecek arkadaşlara duyurulur.

( Not: Bu soruyu sormadan önce delphi türkiye forumlarını kontrol ettim , arama yaptırdım, hatta bir günümü delphi türkiye offline v4 e ayırdım ) :)
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Hangi DB yi kullandığını yazmamışsın. Eğer MsSQL Server kullanıyorsan ISNULL fonksiyonunu kullanabilirsin: SUM(ISNULL(BORC,0))
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

Kullanıcı avatarı
Metinx
Üye
Mesajlar: 54
Kayıt: 04 Eki 2007 01:39

Mesaj gönderen Metinx »

Naile hocam hangi Veritabanını kullanıyorsun diye sormuşsunuz firebird 1_5 kullanıyorum. cevaplarınızı bekliyorum sizden ricam yardımlarınızı orta düzey olduğumu göz önünde tutarak değerlendirin mesela select ile başlayan bir ifadeyle :)
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

Kod: Tümünü seç

 SELECT coalesce(sum(Borc), 0) FROM satis
Kullanıcı avatarı
Metinx
Üye
Mesajlar: 54
Kayıt: 04 Eki 2007 01:39

Mesaj gönderen Metinx »

Serkan'ın verdiği kodu şu şekide denedim

Kod: Tümünü seç

SELECT coalesce(sum(Borc), 0) FROM satis

aldığım hata

Kod: Tümünü seç

An error was found in the application program input parameters for the SQL statement.
Dynamic SQL Error.
SQL error code = -804.
Function unknown.
COALESCE.
Yardımlarınızı bekliyorum.
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

Kod: Tümünü seç

Function unknown. 
COALESCE.
Anladığım kadarı ile firebird 1_5 'de bu fonksiyon yok.

Isnull kullanmayı dene birde aynı şekilde.

Kod: Tümünü seç

SELECT ISNULL(sum(Borc), 0) FROM satis 
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

Bende firebird kullanıyorum, yıllardır o fonksiyonu kullanıyorum bir problem yok! Sorun neden kaynaklanıyor orasını bilmiyorum ama..
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

sql dialecti ne seçili ? ondan olmasın. cidden coalesce standart bir fornksiyon sonuçta
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
Metinx
Üye
Mesajlar: 54
Kayıt: 04 Eki 2007 01:39

Mesaj gönderen Metinx »

Arkadaşlar sql dialect 3 ayarlı fakat aklıma bişey takıldı bu client library gds32.dll seçili bu bildiğim kadarı ile interbase nin bir de firebirdin olacaktı o mu olması gerekir acaba sıkıntı burda olabilir mi ?

Denediğim kodlar ve hatalrı aşağıdaki gibidir.

Kod: Tümünü seç

SELECT ISNULL(sum(Borc), 0) FROM satis
Hata

Kod: Tümünü seç

An error was found in the application program input parameters for the SQL statement.
Dynamic SQL Error.
SQL error code = -804.
Function unknown.
ISNULL.

Kod: Tümünü seç

SELECT IS NULL(sum(Borc), 0) FROM satis
Hata

Kod: Tümünü seç

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 1, char 7.
IS.

Kod: Tümünü seç

SELECT coalesce(sum(Borc), 0) FROM satis
Hata

Kod: Tümünü seç

An error was found in the application program input parameters for the SQL statement.
Dynamic SQL Error.
SQL error code = -804.
Function unknown.
COALESCE.
Yardımlarınızı bekliyorum.
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

4 5 senedir interbase ve fbd ile aram yok ama dediğin gibi ikisi içinde dlller farklı idi.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
Metinx
Üye
Mesajlar: 54
Kayıt: 04 Eki 2007 01:39

Mesaj gönderen Metinx »

Arkadaşlar akşam gds32.dll yerine fbclient.dll yaptım oldu ama merak ediyorum iki artsında fark nedir.
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

gds interbase fb ise firebirdin bağlantı kütühanesi . ancak fb geriye dönük uyumluluk için gds32 olarakta çalışabilir.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
Metinx
Üye
Mesajlar: 54
Kayıt: 04 Eki 2007 01:39

Mesaj gönderen Metinx »

Arkadaşlar merhaba sorunumu hallettim sorunum sanırım interbasenin gds32 i varmış ben firebirdin sanıyordum firebirdi tekrar kurdum olay çözüldü lakin asıl istediğim yani alis_detay ve satis tablolarındaki borc alanını toplatamadım şu şekilde alt alta geliyor

Kod: Tümünü seç

select coalesce(sum(borc),0) from satis
union
select coalesce(sum(borc),0) from ialis_iade
ama birtürlü toplatamadım. bu sorunu nasıl çözebilirim.


(Yardımlarından dolayı siz ve ayrıca sabanakman arkadaşıma tşk ediyorum.)
drbastem
Üye
Mesajlar: 15
Kayıt: 03 Oca 2008 10:17
İletişim:

Mesaj gönderen drbastem »

Firebird kullanıyorsanız kayıt yaoınca Null değerini 0 sıfır yapmak.
alıs veya satıs tabllosunda trigere aşağıdaki kod inşaalah cözer gibi geliyor.
AS
BEGIN
IF (NEW.KEY_ IS NULL) THEN
NEW.KEY_ = GEN_ID(DETAIL09_KEY__GEN, 1);
if (new.borc is null) then new.borc=0;
if (new.alacak is null) then new.alacak=0;
if (new.deger is null) then new.deger=0;

END

deger bos bir alan. borc alacak hangi tipte ise aynı tipte olacak
ayrıca sorgulamada ise

aynı satırsa musteri kodu borc ve alacak gözükür.

select musteriNo,borc, alacak from
(
select musteriNo,sum(borc) as borc, sum(deger) as alacak from alis
group by musterino
union
select musteriNo,sum(deger) as borc, sum(deger) as alacak from satis
group by musterino
)
group by musterino
Cevapla