sql ve Sum()

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
hakkus
Üye
Mesajlar: 160
Kayıt: 18 Haz 2003 12:02
Konum: Konya

sql ve Sum()

Mesaj gönderen hakkus »

Merhabalar,
select tarih, sum(toplam) from HAREKET where tarih='27.02.2003'
group by tarih
bu sql de sum(toplam) değeri 880,200,000 olarak hesaplanıyor.
Ayrıca
select tarih, sum(toplam) from AYRINTI where tarih='27.02.2003'
group by tarih
bu sql de de sum(toplam) değeri 880,200,000 olarak hesaplanıyor.
ANCAK
SELECT a.tarih, sum(a.toplam), b.tarih, sum(b.tarih)
from HAREKET a, AYRINTI b
WHERE a.tarih='27.02.2003' and b.tarih='27.02.2003' // veya b.tarih=a.tarih
Group by a.tarih, b.tarih
sorgusunda toplamlar farklı çıkıyor .
Bunun sebebi ne olabilir?
Şimdiden teşekkürler
Saygıyla
saygılar
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

SELECT a.tarih, sum(a.toplam), sum(b.tarih)
from HAREKET a, AYRINTI b
WHERE b.tarih=a.tarih
Group by a.tarih

diye dene bence.
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Re: sql ve Sum()

Mesaj gönderen fahrettin »

hakkus yazdı:
SELECT a.tarih, sum(a.toplam), b.tarih, sum(b.tarih)
from HAREKET a, AYRINTI b
WHERE a.tarih='27.02.2003' and b.tarih='27.02.2003' // veya b.tarih=a.tarih
Group by a.tarih, b.tarih
Saygıyla
Kodda sum(b.tarih) demissiniz bu hata tabi. Eger kodu bu sekli ile calistirdiysaniz zaten farkli cikmasi normal.

Sizin yazdiginiz sql cumlesi de genel yapisi ile dogru olmakla birlikte bir kac gereksiz fazlaligi icerdigi icin Naile'nin yazdigi ornek daha dogru .
Tabi sum(b.toplam) sekli ile .

Kolay gelsin.
hakkus
Üye
Mesajlar: 160
Kayıt: 18 Haz 2003 12:02
Konum: Konya

Mesaj gönderen hakkus »

Merhabalar,
ilginize teşekkür ederim.
evet sum(b.tarih) yanlışlıkla yazılmış aslında sum(b.toplam)
ancak ben her iki tablo da da '27.02.2003' tarihli kayıtların toplamını tek bir query i ile almaya çalışıyorum.
Naile nin kodunda tarih süzgeci yok.
Yeniden özetlersem hareket ve ayrıntı tablo larında tarih ve toplam alanları var.
Bu iki tablonun 27.02.2003 tarihine ait toplam alanlarının sum 'ını tek bir query ile almak istiyorum.
Saygıyla
saygılar
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

SELECT a.tarih, sum(a.toplam), sum(b.toplam)
from HAREKET a, AYRINTI b
WHERE a.tarih = '27.02.2003' and b.tarih=a.tarih
Group by a.tarih

şeklinde yazman yetecek gibi..
hakkus
Üye
Mesajlar: 160
Kayıt: 18 Haz 2003 12:02
Konum: Konya

Mesaj gönderen hakkus »

Merhabalar,
SELECT a.tarih, sum(a.toplam), sum(b.toplam)
from HAREKET a, AYRINTI b
WHERE a.tarih = '27.02.2003' and b.tarih=a.tarih
Group by a.tarih
şeklinde ki bir query 1.toplamı tanlış getiriyor.
iki ayrı query ile istediğim sonucu aldım ancak yukardaki query nin neden doğru çalışmadığını anlıyamıyorum.
Tekrar ilginize teşekkür ederim
Saygıyla
saygılar
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

İki tablo arasında başka ortak alanlar varsa onları da eşitleyerek dene istersen. Örneğin ikinde de stok_kodu alanları varsa
a.stok_kodu=b.stok_kodu

gibi
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

doğrusu ben böyle bir toplam alma hiç kullanmadım. belki gerekmedi. ama bence tektek almak -sözlü bir açıklaması olmasa da- en akıllıca olanı.
Cevapla