sql de string ifadenin sayısını alma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
sekocan
Üye
Mesajlar: 26
Kayıt: 25 Ağu 2004 12:35

sql de string ifadenin sayısını alma

Mesaj gönderen sekocan »

selamlar arkadaşlar

ben bir yemekhane otomasyonu ile uğraşıyorum...şimdi tablodan query ile kullanıcının seçtiği tarihler arası ve seçilen işyerine göre yediği yemek sayısını almam gerekiyor...

yani tabloda yenen adlı bir alanda yazılı olan kahvaltı,öğle ve akşam gibi string ifadeleri toplayıp sayısını göstermek istiyorum...

acil yardımcı olursanız sevinirim
doganzorlu
Kıdemli Üye
Mesajlar: 395
Kayıt: 22 Tem 2004 09:15
Konum: İzmir
İletişim:

Mesaj gönderen doganzorlu »

Selam,

Kod: Tümünü seç

SELECT Yemektipi,COUNT(yemektipi) Adet FROM tablo GROUP BY yemektipi
işinizi görecektir.
Doğan Zorlu, İzmir

------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
sekocan
Üye
Mesajlar: 26
Kayıt: 25 Ağu 2004 12:35

count sayısal ifadelerde geçerli değil mi

Mesaj gönderen sekocan »

sayın hocam bildiğim kadarıyla count integer tipte değişkenlerde kullanıyo

ben ise string ifadelerin toplamını bulmak istiyorum

yani yenen alanında öğle yazanları toplucam mesela....

öğle yazanların toplamını alcam gibi...

bu işime yaramadı
Misafir

Mesaj gönderen Misafir »

Kod: Tümünü seç

var syemeksayisi,oyemeksayici,ayemeksayisi,i:integer;
yemektipi:string;
begin
  ayemeksayisi:=0;
  oyemeksayici:=0;
  ayemeksayisi:=0;
  Query1.First;
  for i:=1 to Query1.RecordCount do
  begin
    yemektipi:=Query1.FieldByName('yemektipin').AsString;
    if yemektipi='sabah' then
      inc(syemeksayisi)
    else if yemektipi='öğle' then
      inc(oyemeksayici)
    else inc(ayemeksayisi);
    Query1.Next;
  end;
end;


illada sql ile yapmak zorunda değilsen kod ile böyle yap. ve tabloya yemektiplerini sabah öğle akşam diye kayıt etme 0 1 2 gibi kaydet yada s o a gibi, daha hızlı arama yapabilirsin. kullanıcı arayüzünde istediğin gibi göster ama bu tür az değer alan şeyleri en küçük boyutta kaydet kolay gelsin.
Misafir

Mesaj gönderen Misafir »

ayemeksayisi:=0;
oyemeksayici:=0;
ayemeksayisi:=0;
ayemeksayisi olanlardan biri syemeksayisi olacak pardon. :oops:
Kullanıcı avatarı
TRSoft
Kıdemli Üye
Mesajlar: 636
Kayıt: 13 Şub 2004 11:39
Konum: Konya
İletişim:

Mesaj gönderen TRSoft »

@doganzorlu hocamın verdiği kod işini görecektir.
Count alan üzerinde herhangi bir işlem yapmıyor sadece dönen kayıt sayısını tutuyor. Dolayısıyla alanın integer veya string olması farketmez..
İlimle geçen bir gece,
ibadetle geçen bin geceden hayırlıdır.
HZ. MUHAMMED (S.A.)
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

yemeklere sabit bir integer(byte da olur esasında) sayı atayıp öyle yapsanız yemek isimlerinide başka bir tablodan çekseniz sanki süper olur :)
mesela benim yemek tablom için
1 Kahvaltı
2 10 çayı+kek
3 12 öğle yemeği öncesi atıştırma
4 öğle yemeği 1
5 öğle yemeği 2
6 2 çayı
7 5 çayı+kek
8 ilkindi yemeği
9 akşam yemeği
10 televizyon karşısı atıştırması
11 televizyon karşısı yemeği
12 yatsı yemeği

bu liste uzar gider :)
.-.-.-.-.-.-.-. ^_^
doganzorlu
Kıdemli Üye
Mesajlar: 395
Kayıt: 22 Tem 2004 09:15
Konum: İzmir
İletişim:

Re: count sayısal ifadelerde geçerli değil mi

Mesaj gönderen doganzorlu »

Selam,
sekocan yazdı:sayın hocam bildiğim kadarıyla count integer tipte değişkenlerde kullanıyo ben ise string ifadelerin toplamını bulmak istiyorum yani yenen alanında öğle yazanları toplucam mesela....
öğle yazanların toplamını alcam gibi... bu işime yaramadı
'Toplamını bulmak' ve 'Adedini Bulmak' iki ayrı kavramdır. Bunun için SQL de iki ayrı aggregate fonksiyon bulunur. Birisi SUM ve birisi de COUNT.

COUNT, ilgili koşula uyan kayıt sayısını verir ki ;

şimdi tablodan query ile kullanıcının seçtiği tarihler arası ve seçilen işyerine göre yediği yemek sayısını almam gerekiyor...

yani tabloda yenen adlı bir alanda yazılı olan kahvaltı,öğle ve akşam gibi string ifadeleri toplayıp sayısını göstermek istiyorum...
yani;

Yenen
--------------
kahvalti
kahvalti
öğle
kahvalti
kahvalti
kahvalti
akşam
akşam


ifadenizden tablonuzdaki kolonun bu şekilde olduğu anlaşılıyor. Eğer deseydiniz ki yenen adlı alanda 1 2 3 gibi değerler var ve ben bunların toplamını almak istiyorum, o zaman SUM kullancaktınız. Eğer alan sayısal değilse o zaman önce sayısal bir tip e dönüştürüp, sonra toplam aldıracaktınız.

Kolay gelsin,
Doğan Zorlu, İzmir

------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
Cevapla