biraz sum, bıraz çıkarma işlemi

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
csyasar
Üye
Mesajlar: 646
Kayıt: 25 Şub 2004 10:14
Konum: Tokat

biraz sum, bıraz çıkarma işlemi

Mesaj gönderen csyasar »

kardeşler;

bu gece saat 03:40'a kadar uğraştım artık kafam basmaz oldu. projedenin uğraştığım sayfasında 1742 satır kod var.

yapmak istediğim son derece basit. 3 tane query var. 3 'üde sum fonksiyonlu query. bunların 1.sinden 2.yi çıkaracağım. kalanı da diğer query'e atayacağım. biri hemen bana bi cevap yazsın yoksa kafayı oynatacağım.

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

Mesaj gönderen fahrettin »

Epey yorulduğunuz sorudan da belli oluyor... Zira tam olarak ne yapmak istediğinizi anlamadim... Yani birşeyler anladim da herhalde bu degildir denilmek istenen diyorum.... Gerekirse sql cumleleri ile tekrar yazarsanız bakalim. Ayrıca veritabanı nedir? eger sub query destekliyorsa bahsettiginiz birbirinden cikacak iki query'yi tek bir query olarak da alabilirsiniz. Hatta update'i bile tek bir sql statement icinden yapabilirsiniz... Yeter ki veritabanı sizi yarıyolda bırakmasın....

Herhalde bu kadar basit degildir aradıgınız cevap:

Kod: Tümünü seç

Query3ALAN.AsInteger:=Query1TOPLAM_ANALI.AsInteger-Query2TOPLAM_ALANI.AsInteger;
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

valla bende şöyle birşey anladım iki ayrı alanın en büyük değerlerini bulup bunların farkıyla üçüncü alanda arama yaptırıcan galiba

aşağıdakine benzer iki fonksiyon ile iki değer alıp

Kod: Tümünü seç

with QueQuery do
  begin
  Close;

  Sql.Clear;
  Sql.Add('SELECT MAX(deneme.isNo)');
  Sql.Add('FROM deneme');
  Sql.Add('WHERE deneme.Tarih=:TAR');
  Params[0].AsDate:=Date;
  Open;
  if not Fields[0].isNull then
     if Fields[0].AsInteger <> 0 then
        maxisNo := Fields[0].AsInteger;

  fonksiyonadı   := maxisNo;
  Close;
  end;
aradeğer= fonksiyon1 - fonksiyon2;

3. fonksiyondada bu ara değer ile arama yapmak gibi bir çözüm geldi aklıma,

soruyu yanlış anladıysam pardon
csyasar
Üye
Mesajlar: 646
Kayıt: 25 Şub 2004 10:14
Konum: Tokat

Mesaj gönderen csyasar »

paradox kullanıyorum. şimdi üç tane para alanı olan query var. birisi tüm ödemelerin toplamı. birisi tüm tahsilatların toplamı. diğeri ise bunların farkı. yapmak istediğim sadece bu. öylesine yorulmuşum ki kafam kazan gibi. şu an az ilerden geçen traktör de 2 tane oluyo. artık siz anlayın durumu...
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Soru çok açık olmadığından anlamak da zor oluyor maalesef:( Query ye atamadan kasıt nedir? Yani bu bir RequestLive açılmış Query mı ki 1. ve 2.querynin farkını bunun bir alanına atayacaksın??

Kod: Tümünü seç

Query3.FieldByName('FARK').AsFloat := Query1.FieldByName('TOP_ODEME').AsFloat - Query2.FieldByName('TOP_TAHSILAT').AsFloat;
İstediğiniz böyle birşey mi bilemiyorum? Queryleri yazmada problem yoktur sanırım. Çünkü tabloları ve alanları bilemeyince neye göre SUM alınacağını da tahmin edemedim? Olayı query bazında değil de tablo bazında açıklamak soruyu daha anlaşılır kılacaktı.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
csyasar
Üye
Mesajlar: 646
Kayıt: 25 Şub 2004 10:14
Konum: Tokat

Mesaj gönderen csyasar »

şimdiiii...

query1 -->tum alacakların bulunduğu tablo(sum fonk. ile tablonun miktar field'ındaki tüm değerleri toplatıracam)

query2-->tüm tahsilatların bulunduğu tablo(yine sum ile tablonun miktar alanındaki tüm değerleri toplattıracam)

QUERY3-->bu query hiçbir tabloya bağlı değil. sadece üzerinde hayali bir currency alan var. bu hayali alana da query1(sum miktar) - query2(sum miktar) farkını koyacağım.

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

Mesaj gönderen fahrettin »

eger query3 hic bir yere bagli degilse oraya ataam yapamazsınız....Sadece sonucu gostermekse amac bunun yerine tek query ile bunu yapin derim....

Kod: Tümünü seç

Select (Select Sum(ALAN1) from tablo1)-(Select Sum(ALAN2) from tablo2) as SONUC

Kod: Tümünü seç

Select Sum(ALAN1) -(Select Sum(ALAN2) from tablo2) as SONUC
from tablo1
Paradox hangisini kabul eder bilmiyorum ama bunları kabul etmese de kabul edecegi bir kod yakalanabilir kanaatindeyim....

NOT: Her ikisi de sybase'de calismakta. Atmasyon degiller yani ;)
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
csyasar
Üye
Mesajlar: 646
Kayıt: 25 Şub 2004 10:14
Konum: Tokat

Mesaj gönderen csyasar »

fahrettin abi sağol yaaaa.

insan şu iki kodu hatırlamak için sabahlara kadar uğraşıyo. görüncede çılgına dönüyo. e tabii gece 03'e kadar oturunca kayış kopuyo. valla formadi.close komutu için bile bisürü sorun yaşadım. yoksa programcılığı bilmeyen biri değilim. 6 yıldır uğraşıyorum. adam 11 de yatıp sabah dinç olarak kalkıyo :D ondan sonra da böyle güzel kodlar yazıyo...

özetle çok teşekkür ederim.
Cevapla