alanları guruplayarak toplama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
yusuf
Üye
Mesajlar: 139
Kayıt: 20 Tem 2005 11:05
Konum: İSTANBUL

alanları guruplayarak toplama

Mesaj gönderen yusuf »

S.A. Arkadaşlar Alanları guruplayarak toplamak istiyorum fakat alanlarım çok fazla olduğu için sum ile yapamıyorum 65 adet alanım var bunları guruplayarak toplamlarını almak istiyorum şu şekilde yapıyorum alan çoğalınca hata alıyorum yardımlarınız için şimdiden teşekkürler.

Kod: Tümünü seç

Sql.Add('hastalık_turu,SUM(alan1),SUM(alan2),SUM(alan3) from istatistik ');
 Sql.Add('GROUP BY hastalık_turu);
Alanları çoğaltınca sorun alıyorum.

yardımlarınız için teşekkürler.
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Bu tür durumlarda hata alıyorum demekten ziyade şu hatayı alıyorum derseniz daha açıklayıcı olur daha çabuk yardım alırsınız.

Yazmamışsınız ama anladığım kadarı ile tamamını aynı satıra yazıyorsunuz, delphi de katakter sayısı hatası veriyordur. Stringi bölerek bir kısmını alt satıra yazmayı deneyin.
yusuf
Üye
Mesajlar: 139
Kayıt: 20 Tem 2005 11:05
Konum: İSTANBUL

Mesaj gönderen yusuf »

evet naile hanım haklısınız karakter hatası alıyorum dediğiniz şekilde olabilir peki nasıl string e bölebilirim bir örnek kod yapabilirmisiniz.
çok teşekkür ederim.
yusuf
Üye
Mesajlar: 139
Kayıt: 20 Tem 2005 11:05
Konum: İSTANBUL

Mesaj gönderen yusuf »

arkadaşlar yardımcı olbilirmisiniz lütfen
Kullanıcı avatarı
fatihtolgaata
Üye
Mesajlar: 382
Kayıt: 04 Mar 2004 09:46
Konum: K.çekmece / İstanbul
İletişim:

Mesaj gönderen fatihtolgaata »

eğer max karakter hatası alıyorsanız, aşağıdaki gibi stringi bölebilirsiniz:

Kod: Tümünü seç

SelectQuery = 'SELECT * FROM Tablo' + #13 +
'WHERE blabla = "bla";';
gibi... Burada #13, enter karakterini temsil eden ascii kodu. Bununla beraber enter koymak yerine boşluk koyarak da halledebilirsiniz aşağıdaki gibi:

Kod: Tümünü seç

SelectQuery = 'SELECT * FROM Tablo ' +
'WHERE blabla = "bla";';
Senin kodun için:

Kod: Tümünü seç

Sql.Add('SELECT * FROM Tablo' + #13 +
'WHERE blabla = "bla"' + #13 + 
'GROUP BY blabla');
gibi bir şey olabilir.

vesselam
yusuf
Üye
Mesajlar: 139
Kayıt: 20 Tem 2005 11:05
Konum: İSTANBUL

Mesaj gönderen yusuf »

fatihtolga hocam teşekkür ederim

Kod: Tümünü seç

Sql.Add('hastalık_turu,SUM(alan1),SUM(alan2),SUM(alan3) from istatistik '); 
 Sql.Add('GROUP BY hastalık_turu);
alanları 65 e kadar çoğaltamıyorum

bu kod da nasıl uygulayacağım
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

' + '
kullanarak bölebilirsin:

Kod: Tümünü seç

Sql.Add('hastalık_turu,SUM(alan1),SUM(alan2),' + 'SUM(alan3) from' + ' istatistik '); 
 Sql.Add('GROUP BY hastalık_turu);
Alfasayısal (string) atamalar 255 karakterden uzunsa bu şekilde bölmelisin.

İyi çalışmalar.
Kullanıcı avatarı
fatihtolgaata
Üye
Mesajlar: 382
Kayıt: 04 Mar 2004 09:46
Konum: K.çekmece / İstanbul
İletişim:

Mesaj gönderen fatihtolgaata »

yusuf yazdı:fatihtolga hocam teşekkür ederim

Kod: Tümünü seç

Sql.Add('hastalık_turu,SUM(alan1),SUM(alan2),SUM(alan3) from istatistik '); 
 Sql.Add('GROUP BY hastalık_turu);
alanları 65 e kadar çoğaltamıyorum

bu kod da nasıl uygulayacağım

Kod: Tümünü seç

Sql.Add('hastalık_turu,SUM(alan1),SUM(alan2),' + 
'SUM(alan3),SUM(alan4),SUM(alan5),SUM(alan6),' + 
'SUM(alan7),SUM(alan8),SUM(alan9),SUM(alan10) ' + 
'from istatistik '); 
 Sql.Add('GROUP BY hastalık_turu);
gibi... Aynı şeyi ard arda Add koyarak da yapabilirsin. Sonuçta ortaya tek bir sql cümlesi çıkacaktır. Yani

Kod: Tümünü seç

Sql.Add('hastalık_turu,SUM(alan1),SUM(alan2),SUM(alan3),');
Sql.Add('SUM(alan4),SUM(alan5),SUM(alan6)');
Sql.Add(' from istatistik '); 
 Sql.Add('GROUP BY hastalık_turu);
gibi...

kolay gele
yusuf
Üye
Mesajlar: 139
Kayıt: 20 Tem 2005 11:05
Konum: İSTANBUL

Mesaj gönderen yusuf »

arkadaşlar çok teşekkürler iyiki varsınız Hepinizden Allah razı olsun.
yusuf
Üye
Mesajlar: 139
Kayıt: 20 Tem 2005 11:05
Konum: İSTANBUL

Mesaj gönderen yusuf »

arkadaşlar kodu doğru yazdığımı zannediyorum fakat hala hata vermekte
hata ise busefer farklı (Syntax) sanırım işaret sorun yada ODBC Driveriyle alakalı olabilir 3.50 sürümü kullanıyorum. Veritabanım MySql
Kodu birde siz inceleyebilirmisiniz Hatamı yapıyorum acaba.

Kod: Tümünü seç

with DataHASTALIK.IsratistikRaporQry do
begin
    Close;
   SQL.Clear;
   Sql.Add('SELECT HASTALIK_TURU,ISTATISTIK_YIL,SUM(BIR_ONIKI_AY_ERKEK),SUM(BIR_ONIKI_AY_KADIN)'+
   'SUM(BIR_YAS_ERKEK),'+'SUM(BIR_YAS_KADIN),'+
   'SUM(IKI_YAS_ERKEK),SUM(IKI_YAS_KADIN)'+
   'SUM(UC_YAS_ERKEK),SUM(UC_YAS_KADIN),SUM(DORT_YAS_ERKEK),SUM(DORT_YAS_KADIN),'+
   'SUM(BES_YAS_ERKEK),SUM(BES_YAS_KADIN),SUM(ALTI_YAS_ERKEK),SUM(ALTI_YAS_KADIN),'+
   'SUM(YEDI_ONDORT_YAS_ERKEK),SUM(YEDI_ONDORT_YAS_KADIN),'+
   'SUM(ONBES_YIRMIDORT_YAS_ERKEK),SUM(ONBES_YIRMIDORT_YAS_KADIN),'+
   'SUM(YIRMIBES_OTUZDORT_YAS_ERKEK),SUM(YIRMIBES_OTUZDORT_YAS_KADIN),'+
   'SUM(OTUZBES_KIRKDOKUZ_YAS_ERKEK),SUM(OTUZBES_KIRKDOKUZ_YAS_KADIN),'+
   'SUM(ELLI_ELLIDOKUZ_YAS_ERKEK),SUM(ELLI_ELLIDOKUZ_YAS_KADIN),'+
   'SUM(ALTMIS_ALTMISDORT_YAS_ERKEK),SUM(ALTMIS_ALTMISDORT_YAS_KADIN),'+
   'SUM(ALTMISBES_USTU_ERKEK),SUM(ALTMISBES_USTU_KADIN)'+
   'FROM hastalık_istatistik ');
 Sql.Add('GROUP BY HASTALIK_TURU');
   Open;
end;
Kullanıcı avatarı
hbahadir
Kıdemli Üye
Mesajlar: 544
Kayıt: 06 Ara 2004 05:03
Konum: BURSA idi artık İST.
İletişim:

Mesaj gönderen hbahadir »

aldığınız hata mesajını tam olarak yazmanızı @naile hanım önermiş, bencede son derece haklı. group by kullanımınız ile ilgili problem var gibi duruyor...
yusuf
Üye
Mesajlar: 139
Kayıt: 20 Tem 2005 11:05
Konum: İSTANBUL

Mesaj gönderen yusuf »

(Syntax) isminde bir hata veriyor.
yusuf
Üye
Mesajlar: 139
Kayıt: 20 Tem 2005 11:05
Konum: İSTANBUL

Mesaj gönderen yusuf »

(Syntax) ODBC 3.51 error hata bu
shadowmann
Üye
Mesajlar: 508
Kayıt: 30 Oca 2004 10:49

Mesaj gönderen shadowmann »

Sizin sorgu ve tablo yapısı tarihe geçecek. 65 alanlı bir tablo.
Şöyle bir deneme yapın. Forma bir memo koyun ve sql sorgunuzu bu memoya bağlayın. Önce bir yaş grubu için sorgu yazın çalıştırın. Ben eğer sorgu biraz karışıksa bu yöntemi kullanıyorum.
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Eğer kod aynen bu şekilde ise birkaç tane yazım (SYNTAX) hatası bir de GROUP BY hatası var.

Bazı SUM(..) ların sonuna virgül koymayı unutmuşsun. SUM(BIR_ONIKI_AY_KADIN) ve SUM(IKI_YAS_KADIN).

Ayrıca GROUP BY HASTALIK_TURU, ISTATISTIK_YIL demen gerekiyor.

İyi çalışmalar.
Cevapla