kısa bir soru..? SQL
kısa bir soru..? SQL
SELECT HesapKodu,Unvan1,Sum((DvrB+DigerB+OdemeB+CiroB+IadeFatB+KDVB+OtvBorc)-(DvrA+DigerA+OdemeA+CiroA+IadeFatA+KDVA+OtvAlacak)) As R_Bakiye FROM FINSAT330.CHK where HesapKodu>='ANK1.00' and HesapKodu<='XÇİM.942' GROUP BY HesapKodu, Unvan1
bu SQL cümlesinde bana 0 olmayan değerleri vermesini nasıl sağlarım.. yani sonucu sıfır olan bakiyeleri listelemesini istemiyorum..
bu SQL cümlesinde bana 0 olmayan değerleri vermesini nasıl sağlarım.. yani sonucu sıfır olan bakiyeleri listelemesini istemiyorum..
Re: kısa bir soru..? SQL
galiba
olmalıSELECT HesapKodu,Unvan1,Sum((DvrB+DigerB+OdemeB+CiroB+IadeFatB+KDVB+OtvBorc)-(DvrA+DigerA+OdemeA+CiroA+IadeFatA+KDVA+OtvAlacak)) As R_Bakiye FROM FINSAT330.CHK where HesapKodu>='ANK1.00' and HesapKodu<='XÇİM.942' GROUP BY HesapKodu, Unvan1
having Sum((DvrB+DigerB+OdemeB+CiroB+IadeFatB+KDVB+OtvBorc)-(DvrA+DigerA+OdemeA+CiroA+IadeFatA+KDVA+OtvAlacak))<>0
ÜŞENME,ERTELEME,VAZGEÇME
evet çalı$tı te$ekkür ederim...
peki ben bu i$lemi aynı $ekilde.. 2. bir table'ım var 2 sinin toplam bakiyesini yani 1. table sum i$lemi sonucundaki BAKİYE ile 2. şirket(table) sum i$leminin sonucundaki BAKİYE arasındaki farkı.. bir SQL cümlesinde nasıl yapabiliriz..?
2. Table FINSAT373.CHK oluyor..
peki ben bu i$lemi aynı $ekilde.. 2. bir table'ım var 2 sinin toplam bakiyesini yani 1. table sum i$lemi sonucundaki BAKİYE ile 2. şirket(table) sum i$leminin sonucundaki BAKİYE arasındaki farkı.. bir SQL cümlesinde nasıl yapabiliriz..?
2. Table FINSAT373.CHK oluyor..
-
- Kıdemli Üye
- Mesajlar: 574
- Kayıt: 01 Şub 2004 12:29
- Konum: Erdemli - MERSİN
Hocam ben bu tür bir sql ile denedim fakat söyle bir sorun ile karsilastim...
Tablo 1 de iki adet kayit var.
Tablo 2 de bir adet kayit var.
söyle bir sql cümlesi kullandim...
Tablo 1 deki kayitlarda iki adet girdi görülüyor.. 125,88 ve 114,58
Tablo 2 deki kayit 1 adet ve söyle görülüyor. 52,74
Giren = 240,46
Cikan = 105,48
Kalan = 134,97
bu sekilde görülüyor... hesap yanlis... cikamadim isin icinden...
yardimci olabilirseniz sevinirim...
simdiden tesekkür ediyorum... selam ve dua ile...
Tablo 1 de iki adet kayit var.
Tablo 2 de bir adet kayit var.
söyle bir sql cümlesi kullandim...
Kod: Tümünü seç
select sum(Tablo1.hesap) as Giren, sum(Tablo2.Hesap) as Cikan, sum(Tablo1.Hesap)-sum(Tablo2.Hesap) as Kalan from Tablo1, Tablo2
Tablo 2 deki kayit 1 adet ve söyle görülüyor. 52,74
Giren = 240,46
Cikan = 105,48
Kalan = 134,97
bu sekilde görülüyor... hesap yanlis... cikamadim isin icinden...
yardimci olabilirseniz sevinirim...
simdiden tesekkür ediyorum... selam ve dua ile...
kıdemsiz üye
-
- Kıdemli Üye
- Mesajlar: 574
- Kayıt: 01 Şub 2004 12:29
- Konum: Erdemli - MERSİN
Kodunuzda birşey görükmüyor,
Burada Girenin ve Kalan ın doğru sonuc verdiği görülüyor .
Sorun sizinde gördüğünüz gibi Cikan da .
Tablo2de sadece tek bir kayıt olduğuna emin misiniz?
Yani where ile herhangi bir kısıtlama da koymamışsınız. Dolayısı ile select ten her iki tablonun bütün alanları geliyor.
Tablo1 den 2 kayıt olduğu kesin ama
Tablo1
sanki birden fazla kayıt var gibi .
IbExpert gibi bir yönetim aracından o tabloda ki kayıtlara bir bakın
veya da şunu da bir deneyin bakalım ;
Kaç kayıt gelecek 
Burada Girenin ve Kalan ın doğru sonuc verdiği görülüyor .
Sorun sizinde gördüğünüz gibi Cikan da .
Tablo2de sadece tek bir kayıt olduğuna emin misiniz?
Yani where ile herhangi bir kısıtlama da koymamışsınız. Dolayısı ile select ten her iki tablonun bütün alanları geliyor.
Tablo1 den 2 kayıt olduğu kesin ama
Tablo1

IbExpert gibi bir yönetim aracından o tabloda ki kayıtlara bir bakın
veya da şunu da bir deneyin bakalım ;
Kod: Tümünü seç
select * from Tablo2

hocam ikinci tabloda yalnizca 1 adet kayit var. ama tablo 1 de 2 kayit oldugu icin iki defalik döngü oluyor sanki ve ikinci tablodaki tek kayidi ikiyle carpiyor
Hakan hocamin dedigi gibi yaptim DISTINCT komutunu kullandim... i ih olmuyor bu sefer hic calismiyor... sql hatasi oldugunu söylüyor... SQL in su an ki halini kopyaliyorum...
hesap_id her iki tablo da index olarak kullaniliyor...

Hakan hocamin dedigi gibi yaptim DISTINCT komutunu kullandim... i ih olmuyor bu sefer hic calismiyor... sql hatasi oldugunu söylüyor... SQL in su an ki halini kopyaliyorum...
hesap_id her iki tablo da index olarak kullaniliyor...
Kod: Tümünü seç
select sum(tablo1.hesap) as giren, sum(tablo2.hesap) as cikan, sum(tablo1.hesap)-sum(tablo2.hesap) as kalan from tablo1, tablo2 where tablo1.hesap_id=1 and tablo2.hesap_id=1
kıdemsiz üye
Başka bir kullanımı var mı bilemiyorum en azında yazım formatlarında o şekilde gösterilmiş. DISTINCT kelimesi SELECT DISTINCT ... FROM ... şeklinde kullanılır ve eşit olan / tekrarlayan satırlardan sadece birini görüntüler.
Bahsettiğiniz olayda kartezyen çarpımından kurtulmak için ilişkili alanları birbirine eşitlemelisiniz
Yani;
Burada esas tablo tablo1 dir. tablo2 join lenmiş oluyor. JOIN olayına bakmanızı tavsiye ederim 


Kod: Tümünü seç
select sum(tablo1.hesap) as giren, sum(tablo2.hesap) as cikan, sum(tablo1.hesap)-sum(tablo2.hesap) as kalan
from tablo1, tablo2
where tablo1.hesap_id = tablo2.hesap_id

Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
yok hocam ne yapiysam basarili olamadim... bunu bir sekilde cözmek zorundayim yoksa hic bir sey yapamiyorum... hersey bunun ucuna baglandi kaldi... ne denediysem olumlu sonuc alamadim... sql kitaplarini arastiriyorum, kartezyen olaylarini vesaire ama malesef yine olumlu bir sonuc alamadim... bu isi cözebilecegim farkli bir yöntem var mi?
simdi yapmak istedigim su...
ya bir query ile ayni anda her iki tablodaki field lari alip sergilemek ve ayni anda hem toplamlarini hemde toplamlari birbirlerinden cikartip kalan i görüntüleyebilmek.
yada iki query kullanip birincisi ile field lari alip ikincisi ile toplama ve cikartma islemlerini yaptirmak...
hocam cici bi sql cümlesi lazim...
Selam ve dua ile...
simdi yapmak istedigim su...
ya bir query ile ayni anda her iki tablodaki field lari alip sergilemek ve ayni anda hem toplamlarini hemde toplamlari birbirlerinden cikartip kalan i görüntüleyebilmek.
yada iki query kullanip birincisi ile field lari alip ikincisi ile toplama ve cikartma islemlerini yaptirmak...
hocam cici bi sql cümlesi lazim...

Selam ve dua ile...
kıdemsiz üye
Kullandığınız query nasıl join yaparsanız yapın DISTINCT kullanmadan istediğiniz sonucu vermeyecektir.
Eğer her iki tabloda join yaptığınız kritere uyan kayıt sayıları karşılıklı aynı olursa istediğiniz sonucu alırsınız.
Ama olmadığı zaman diyelim birinci tabloda bir kritere uyan 1 kayıt diğer tabloda 2 kayıt var.
DISTINCT kullanmazsanız birinci tablodaki kaydın iki katını döndürecektir. DISTINCT kullanırsanız birinci tablodan bir kaydı
ikinci tablodan iki kaydı döndürür.
Sonuç olarak Query'inizin şu şekilde olması gerekir:
DISTINCT kelimesini en basit olarak şu şekilde test edin:
SELECT SUM(DISTINCT TUTAR) FROM TABLO1
İyi çalışmalar.
Eğer her iki tabloda join yaptığınız kritere uyan kayıt sayıları karşılıklı aynı olursa istediğiniz sonucu alırsınız.
Ama olmadığı zaman diyelim birinci tabloda bir kritere uyan 1 kayıt diğer tabloda 2 kayıt var.
DISTINCT kullanmazsanız birinci tablodaki kaydın iki katını döndürecektir. DISTINCT kullanırsanız birinci tablodan bir kaydı
ikinci tablodan iki kaydı döndürür.
Sonuç olarak Query'inizin şu şekilde olması gerekir:
Kod: Tümünü seç
select sum(DISTINCT tablo1.hesap) as giren, sum(DISTINCT tablo2.hesap) as cikan, sum(DISTINCT tablo1.hesap)-sum(DISTINCT tablo2.hesap) as kalan
from tablo1, tablo2
where tablo1.hesap_id = tablo2.hesap_id
DISTINCT kelimesini en basit olarak şu şekilde test edin:
SELECT SUM(DISTINCT TUTAR) FROM TABLO1
İyi çalışmalar.
hocam distinct kelimesini en basit olarak su sekilde test edin demissin.
bu sekilde test ettim ama bende distinct kelimesi hic calismiyor
ZEOS adinda komponent kullaniyorum acaba komponent bu sekilde bir command i desteklemiyor olabilir mi? gerci böyle bir sey olmasi zor bir ihtimal cünkü sql standart dil... sql hatali diye bildiri aliyorum... sorun nerede olabilir?
Kod: Tümünü seç
SELECT SUM(DISTINCT TUTAR) FROM TABLO1

ZEOS adinda komponent kullaniyorum acaba komponent bu sekilde bir command i desteklemiyor olabilir mi? gerci böyle bir sey olmasi zor bir ihtimal cünkü sql standart dil... sql hatali diye bildiri aliyorum... sorun nerede olabilir?
kıdemsiz üye