Sql ile Sutun toplama problemi..

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ı
ömer faruk
Üye
Mesajlar: 97
Kayıt: 29 Eki 2003 09:34
Konum: Bursa
İletişim:

Sql ile Sutun toplama problemi..

Mesaj gönderen ömer faruk »

Select SUM (SERVIS) as SERVIS1, SUM (ALINAN) as ALINAN1
From CARI,M USTERIBILGILERI where CARI.Bagla=MUSTERIBILGILERI.MUSTERIADI

Yapmak istediğim her müşteriye ayrı ayrı nekadar servis kesip nekadarını almışız ve kalan borc nekadar ama
bu şekilde yazıyorum ...çok saçma rakamlar çıkarıyor karşıma ama cari
table daki alınan vce servis te okadar rakam yok başka yerden de bişi almıyorum anlamadım gitti acaba silinen kayıtlarıdamı topluyor bu yardımcı
olursanız sevinirim.
Hakimiyet ALLAH' ındır...
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Öncelikle linkleri yani master detail bağlantıları String alanlarla yapmayın. bunu genel bir alışkanlık yapın. bu link ler için primarykey leri kullanın.
Ben genellikle kullandığım yöntemi söyliyeyim. Cari ye göre gruplayıp LookUp larla ekrana aktarıyorum. Performansıda çok iyi diyebilirim
kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Primary key ve foreing key'lerin string olmamasi uyarisina ben de katilmakla birlikte mevcut yapidaki cozum select statement'a bir group by eklemekle olur...

Kod: Tümünü seç

Select MUSTERIBILGILERI.MUSTERIADI 
, SUM (SERVIS) as SERVIS1, SUM (ALINAN) as ALINAN1 
From CARI,MUSTERIBILGILERI where CARI.Bagla=MUSTERIBILGILERI.MUSTERIADI 
group by MUSTERIBILGILERI.MUSTERIADI 
order by MUSTERIBILGILERI.MUSTERIADI 
Kullanıcı avatarı
ömer faruk
Üye
Mesajlar: 97
Kayıt: 29 Eki 2003 09:34
Konum: Bursa
İletişim:

Mesaj gönderen ömer faruk »

Select MUSTERIBILGILERI.MUSTERIADI
, SUM (SERVIS) as SERVIS1, SUM (ALINAN) as ALINAN1
From CARI,MUSTERIBILGILERI where CARI.Bagl=MUSTERIBILGILERI.MKAYITNO
group by MUSTERIBILGILERI.MUSTERIADI
order by MUSTERIBILGILERI.MUSTERIADI


Fahrettin abi sizin söylediğiniz şekilde gözden geçirip yanlışlarımı düzelltim...yukarıdaki gibi yaptım yine istediğim şeyi vermiyor...bu çalıştıgında şoyle bir çıktı elde ediyor butun muşterilerin borçlarını ayrı ayrı topluyor ama ben o anki kayıttakini istiyorum ve onu göstermesini istiyorum ıb easy de delphi de sql ifadesnini çalıştırıyorum o anki kayıdın değilde butun kişilerin borç bilgisini getiriyor...bilmem anlatabildinmi nerde yanlış yapıyorum acaba umarmım anlatabilmişimdir...kolay gelsin ...teşekürler ilginiz için....
Hakimiyet ALLAH' ındır...
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Eger dogru anladiysam where kısmına ilgili musteriyi sınırlayacak bir kriter koymanız yeterli.

Kod: Tümünü seç

Select MUSTERIBILGILERI.MUSTERIADI 
, SUM (SERVIS) as SERVIS1, SUM (ALINAN) as ALINAN1 
From CARI,MUSTERIBILGILERI where CARI.Bagl=MUSTERIBILGILERI.MKAYITNO and MUSTERIBILGILERI.MKAYITNO=10
group by MUSTERIBILGILERI.MUSTERIADI 
order by MUSTERIBILGILERI.MUSTERIADI 
Ornekte 10 numarali kaydi listeleyecektir. Siz sql'i olustururken buraya ya degisklen koyarak ya da dogrudan sql'i olusturmadada iligli degiskeni isin icine katarak bu sekilde bir sql calistirirsaniz olmasi gerekir...
Parametreli kullanım su sekilde olur....

Kod: Tümünü seç

Select MUSTERIBILGILERI.MUSTERIADI 
, SUM (SERVIS) as SERVIS1, SUM (ALINAN) as ALINAN1 
From CARI,MUSTERIBILGILERI where CARI.Bagl=MUSTERIBILGILERI.MKAYITNO and MUSTERIBILGILERI.MKAYITNO=:KAYITNO
group by MUSTERIBILGILERI.MUSTERIADI 
order by MUSTERIBILGILERI.MUSTERIADI 
Sonra da Query1.ParamByName('KAYITNO').AsInteger:=10; seklinde deger atayıp query1.Open demeniz yeterli...
Kullanıcı avatarı
ömer faruk
Üye
Mesajlar: 97
Kayıt: 29 Eki 2003 09:34
Konum: Bursa
İletişim:

Mesaj gönderen ömer faruk »

SELAMUNALEYKUM...
Fahrettin abi gerçekten sağolasın oldu ıbeasy de denedim tam istediğim gibi olayın mantığına öğrenmiş oldum ama delphi de yaptıgımda KAYITNO olayı eklemişsin onu nerde tanımlayacam query icinde data olarak yaptım olmadı...orda takıldım cok mu basit yoksa neyse yinede çok teşekkür ederim coğu gitti azı kaldı....
Hakimiyet ALLAH' ındır...
Kullanıcı avatarı
ömer faruk
Üye
Mesajlar: 97
Kayıt: 29 Eki 2003 09:34
Konum: Bursa
İletişim:

Mesaj gönderen ömer faruk »

*******************
datamodule4.caritoplam.Close;
datamodule4.caritoplam.SQL.Clear;
datamodule4.caritoplam.SQL.Add('Select MUSTERIBILGILERI.MUSTERIADI,SUM (SERVIS) as SERVIS1, SUM (ALINAN) as ALINAN1 From CARI,MUSTERIBILGILERI');
datamodule4.caritoplam.SQL.Add('where CARI.Bagl=MUSTERIBILGILERI.MKAYITNO and MUSTERIBILGILERI.MKAYITNO=:KAYITN group by MUSTERIBILGILERI.MUSTERIADI order by MUSTERIBILGILERI.MUSTERIADI');
datamodule4.caritoplam.ParamS[0].AsInteger:=70;
datamodule4.caritoplam.Open
******************
Üstad Sağolasın Çözüdm olayı ALLAH Razı Olsun.....
Hakimiyet ALLAH' ındır...
Kullanıcı avatarı
ömer faruk
Üye
Mesajlar: 97
Kayıt: 29 Eki 2003 09:34
Konum: Bursa
İletişim:

Mesaj gönderen ömer faruk »

Selamunalekyum...
Üstad yine ben.... :wink: ilgili form açıldığında musteri kayıt numarası girmem gerekiyor buşekilde olursa yine bukodlarla kullanıcı musteri numarası girmeden getirebilirmiyim cari bilgileri...tırmalıyorum ama beremedim şu ana kadar eminim basit bişidir neyse kolay gelsin ...
Hakimiyet ALLAH' ındır...
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Tam anlayamadim ama KAYITNO belli degilse hangi musteri bilgilerini getireceksiniz ki? Ya da ilk acilista ilk musterininkileri getirin mesela....
Kullanıcı avatarı
ömer faruk
Üye
Mesajlar: 97
Kayıt: 29 Eki 2003 09:34
Konum: Bursa
İletişim:

Mesaj gönderen ömer faruk »

Selamunaleykum ....
Olayı şu şekilde çözdüm Fahrettin Abi dbtext üzrine aktardım kayıtno sunu ordan kayıt numarası geldığı için bir butona bagladım ozaman cari hesabı yapıyor yani fazladan bir tuşla olayı halletim pek profosyonel olmadı ama neyse şimdilik çözdüm...ama daha kısa ve mantıklı yolu varsa oda olabilir :) ...kolay gelsin....
Hakimiyet ALLAH' ındır...
Cevapla