İki ayrı sorguyu bağlama

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
Kullanıcı avatarı
pentiumkivanc
Üye
Mesajlar: 350
Kayıt: 19 Şub 2004 10:24
İletişim:

İki ayrı sorguyu bağlama

Mesaj gönderen pentiumkivanc »

Selamlar;
benim sorunum: aynı tablodan yaptığım iki farklı sorguyu tek seferde görüntülemek örneğin maladi,islemtipi,tarih,miktar adında alanlardan oluşan bir tabloda işlem tarihi verdiğim tarihten küçük olanların giriş ve çıkış farkını alıp devir alanında göstermesi, işlem tarihi verdiğim tarihe eşitse bunu da aynı sorguda ama farklı bir alanda göstermesi Örn:

Kod: Tümünü seç

Maladi       islemtipi        tarih          Miktar
A Malı            G          10/07/2004      10.000
B Malı            C          10/07/2004      9.000
A Malı            G          11/07/2004      12.000
A Malı            G          12/07/2004      8.000
Bu tablodan tarih alanı 12/07/2004 ten küçük olanları devir yapacak yani işlem tipi giriş olanların miktarlarından çıkış olanların miktarlarını çıkartacak, Bunu devir miktarı diye gösterecek, işlem tarihi 12/07/2004 olanlarında aynı şekilde farkını alacak ve bunu da bugün diye gösterecek;
Ben bunu

Kod: Tümünü seç

Select Sum(case islemtipi when G then miktar) - Sum(case islemtipi when C then miktar) as devreden
from TABLO 
where (tarih<12/07/2004)
Şeklinde bunu devir sorgusu için yapıyorum. Diğer sorguyu da aynı şekilde yapıp tarih değerini where (tarih=12/07/2004) şeklinde yapıp
Aynı tabloda şu şekilde listelemek istiyorum:

Kod: Tümünü seç

Devreden      Bugun
13.000        8000
Ancak when ile tarih alanını sorgulayamıyorum. Mecburen where kullanmam gerekiyor bu durumda iki ayrı select sorgusunu (tabi tarih filtreleri farklı) nasıl birleştiririm union bu işi görürmü görürse nasıl kullanacağım? Şimdiden teşekkürler
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Sanırım senin istediğin şey unionla olmaz. Şöyle bir yöntem olabilir, ama yavaş çalışabilir..

Kod: Tümünü seç

Select(Select Sum(case islemtipi when G then miktar) - Sum(case islemtipi when C then miktar)
from TABLO where (tarih<12/07/2004)) as [Devreden],
(Select Sum(case islemtipi when G then miktar) - Sum(case islemtipi when C then miktar)
from TABLO where (tarih=12/07/2004))as [Bugun]
FROM TABLO
Kullanıcı avatarı
pentiumkivanc
Üye
Mesajlar: 350
Kayıt: 19 Şub 2004 10:24
İletişim:

Mesaj gönderen pentiumkivanc »

Teşekkür ederim yavaşlığı benimkinden daha azdır heralde çünkü ben şöyle yapmıştım

Kod: Tümünü seç

SELECT sum(case when tarih=12/07/2004 then 
                            case islemtipi when G then miktar end end else 0)
...

:oops:
Yani bu kodlar daha çok içime yarayacak. Tekrar teşekkürler
Cevapla