Kodbank İndir

! CODEBANK 2012 !

İNDİRMEK&DETAYLI BİLGİ ALMAK İÇİN BURAYI TIKLAYINIZ.

ÖNEMLİ AÇIKLAMA: MUTLAKA OKUYUNUZ!

Gönderen Konu: SQL Şartlı Toplama sorgusu nasıl olur?  (Okunma sayısı 1893 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı onselder

  • Yeni Üye
  • *
  • İleti: 4
  • Rep: +0/-0
SQL Şartlı Toplama sorgusu nasıl olur?
« : 23 Şubat 2010 19:05:22 »
Firebird 2.1 kullanıyorum
İbQuery nesnesinin sql cümlesi şu şekilde

with dm.raporqry do
Begin
Close;
SQL.Clear;
SQL.Add('select');
SQL.Add('a.MUSTERINO, a.ADI, a.SOYADI, b.SIPARISNO, b.SIPARISTARIHI, b.TESLIMTARIHI, b.TESLIMEDILECEKTARIH, b.DURUMU,');
SQL.Add('b.TESLIMEDEN, b.TESLIMALAN, b.TOPLAMTUTAR, b.PARCA, b.MUSTERINO, a.SEMT, a.ILCE');

SQL.Add('from MUSTERILER a, SIPARISLER b');
SQL.Add('where b.MUSTERINO=a.MUSTERINO');
SQL.Add('and b.TESLIMTARIHI >='+QuotedStr(datetostr(datetimepicker1.Date)));

Open;
end;

Bu kod normal çalışıyor ama ben sorgu içindeki parca alanlarının toplamını aldırmak istiyorum.
Aşağıdaki kodu yazdım ama sorun veriyor.


with dm.raporqry do
Begin
Close;
SQL.Clear;
SQL.Add('select');
SQL.Add('a.MUSTERINO, a.ADI, a.SOYADI, b.SIPARISNO, b.SIPARISTARIHI, b.TESLIMTARIHI, b.TESLIMEDILECEKTARIH, b.DURUMU,');
SQL.Add('b.TESLIMEDEN, b.TESLIMALAN, b.TOPLAMTUTAR, b.PARCA, b.MUSTERINO, a.SEMT, a.ILCE');
SQL.Add('SUM(b.PARCA) as TPARCA');
SQL.Add('from MUSTERILER a, SIPARISLER b');
SQL.Add('where b.MUSTERINO=a.MUSTERINO');
SQL.Add('and b.TESLIMTARIHI >='+QuotedStr(datetostr(datetimepicker1.Date)));
Open;
end;


Bu şekilde yaptım hata veriyor. Sizce nasıl yapmalıyım. yardımlarınızı bekliyorum....

Çevrimdışı barutali

  • Administrator
  • *****
  • İleti: 2.116
  • Rep: +51/-0
  • Cinsiyet: Bay
  • Falan filan ...
Ynt: SQL Şartlı Toplama sorgusu nasıl olur?
« Yanıtla #1 : 24 Şubat 2010 02:56:10 »
Kod: Delphi
  1. with dm.raporqry do
  2. Begin
  3. Close;
  4. SQL.Clear;
  5. SQL.Add('select');
  6. SQL.Add('a.MUSTERINO, a.ADI, a.SOYADI, b.SIPARISNO, b.SIPARISTARIHI, b.TESLIMTARIHI, b.TESLIMEDILECEKTARIH, b.DURUMU,');
  7. SQL.Add('b.TESLIMEDEN, b.TESLIMALAN, b.TOPLAMTUTAR, b.MUSTERINO, a.SEMT, a.ILCE,');
  8. SQL.Add('SUM(b.PARCA) as TPARCA');
  9. SQL.Add('from MUSTERILER a, SIPARISLER b');
  10. SQL.Add('where b.MUSTERINO=a.MUSTERINO');
  11. SQL.Add('and b.TESLIMTARIHI >='+QuotedStr(datetostr(datetimepicker1.Date)));
  12. Open;
  13. end;

bu şekilde denermisin ..



Amatör Küme Programcı

Çevrimdışı onselder

  • Yeni Üye
  • *
  • İleti: 4
  • Rep: +0/-0
Ynt: SQL Şartlı Toplama sorgusu nasıl olur?
« Yanıtla #2 : 24 Şubat 2010 03:01:27 »
kodda bir değişiklik yapmmaşsınız ki :(

Çevrimdışı barutali

  • Administrator
  • *****
  • İleti: 2.116
  • Rep: +51/-0
  • Cinsiyet: Bay
  • Falan filan ...
Ynt: SQL Şartlı Toplama sorgusu nasıl olur?
« Yanıtla #3 : 24 Şubat 2010 03:06:30 »
Satır 7 : da hem b.PARCA demişsin hemde 8. satırda SUM(PARCA) demişsin ... ayrıca ...
satır 7 de yine b.ILCE den sonra virgül koymamışsın ...
onları düzelttim ..

daha dikkatli incelemeni tavsiye ederim .. iki farklı tabloda kesişen alanlar içinde JOIN kullanman çok daha yararlı olur..
« Son Düzenleme: 24 Şubat 2010 03:37:44 by barutali »



Amatör Küme Programcı

Çevrimdışı onselder

  • Yeni Üye
  • *
  • İleti: 4
  • Rep: +0/-0
Ynt: SQL Şartlı Toplama sorgusu nasıl olur?
« Yanıtla #4 : 24 Şubat 2010 03:12:06 »
vakit ayırdığınız için ilginize teşekkür ederim.
Noktalama hatalarını giderdim. Ancak sorunum şöyle;

iki tablom var bu iki tabloyu tek dbgrdidde ib query nesnesi kullanarak listeletiyorum.
Yalnız listeledikten sonra dbgriddeki PARCA alanının sütun toplamını almak istiyorum.
Fikrinizi var mı?

Gecenin bu saatinde mesajı yanıtlayacağınız aklıma gelmezdi tekrar teşekkürler...

Çevrimdışı barutali

  • Administrator
  • *****
  • İleti: 2.116
  • Rep: +51/-0
  • Cinsiyet: Bay
  • Falan filan ...
Ynt: SQL Şartlı Toplama sorgusu nasıl olur?
« Yanıtla #5 : 24 Şubat 2010 03:49:26 »
  Böyle bir durumda GROUP BY ile gruplaman lazım ama birden fazla alan olduğu için herbirini GROUP BY dan sonra eklemende gerekiyor...

 Ben sadece toplamı öğreneyim yeter dersen ..

Select SUM(PARCA) From SIPARIS Where MUSTRINO = 1234 AND TESLIMTARIHI = '24.02.2010'

Diyerek toplamı alabilirsin ..

2. bi seçenek ..
Normal sadece Where ile kriterleyip listelersin ve PARCA alanını döngü ile toplatırsın ..

3. bi seçenek ..
CXGrid kullanıyorsan onun footer özelliğinde otomatik olarak bu işlemi yaptırabilirsin ki ben hep öyle yapıyorum ...



Amatör Küme Programcı

Çevrimdışı onselder

  • Yeni Üye
  • *
  • İleti: 4
  • Rep: +0/-0
Ynt: SQL Şartlı Toplama sorgusu nasıl olur?
« Yanıtla #6 : 24 Şubat 2010 03:54:15 »
teşekkürler ilk seçenek işimi gördü...