group by la ilgili bi sorun..

Diğer 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ı
interboy
Üye
Mesajlar: 84
Kayıt: 18 Mar 2005 02:52

group by la ilgili bi sorun..

Mesaj gönderen interboy »

arkadaşlar paradox kullanıyorum.
yapmak istediğim ve yapamadığım olay şu:

tüm satışların tutulduğu bir tablom wardı ya. işte o tablo yu grafiğe dökücem.aylara göre kaç satış olduğunu çizdiricem.

yani bana gereken tablo şöyle olcak:

Kod: Tümünü seç

01  |   02   |   03   |   04   | ... |  12   |  --> aylar
-------------------------------
1208| 1400   | 3000   |  1100  |  ... |  580  | --> satış adedi

şöyle bi sorgu kullanmaya yeltendim:

Kod: Tümünü seç

SELECT COUNT(*) AS ISLEM, EXTRACT(MONTH FROM G_TAR) AS AY 
FROM EYLUL 
WHERE EXTRACT(YEAR FROM G_TAR)='2006'
GROUP BY AY
fakat 'invalid field name: AY' hatası aldım.

AY alanı yerine tablodaki tarih alanımı kullanınca (group by g_tar) 'expressions in group by are not supported' gibi bi hata aldım.

nasıl bi sorgu kullanmalıyım?

tşk..
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

bildiğim kadarıyla paradox ta EXTRACT fonksiyonu yok. Yanlışmı hatırlıyorum yoksa :roll:

Kolay gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
group by da ay yerine
ay fieldının sıra numarasını vermeyi dene
2 olması lazım.
kola ygelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

husonet yazdı:bildiğim kadarıyla paradox ta EXTRACT fonksiyonu yok. Yanlışmı hatırlıyorum yoksa :roll:
Paradoks da da EXTRACT fonksiyonu var fakat GROUP BY için öyle bir yapı desteklenmiyor. Belki başka bir çözüm de olabilir yani bir alt sorgu ve PK kontrolu ile ilgili aydakiler saydırılabilir. Tablo yapısını tam bilemeyince böyle bir şeyi söylemek zor :? Onun yerine her ayı bir döngü ile 1 den 12 ye kadar parametre gönderip her ayın toplamını alabilirsiniz.

Kod: Tümünü seç

var
  Sayi : array[1..12] of integer;
begin
  Query1.Sql.Clear;
  Query1.Sql.Add('SELECT COUNT(*) AS ISLEM FROM EYLUL');
  Query1.Sql.Add('WHERE EXTRACT(YEAR FROM G_TAR) = :YIL and EXTRACT(YEAR FROM G_TAR) = :AY');
  Query1.Prepare;
  Query1.ParamByName('YIL').AsInteger := 2006;
  for i := 1 to 12 do
  begin
    Query1.ParamByName('AY').AsInteger := i;
    Query1.Open;
    Sayi[i] := Query1.FieldByName('ISLEM').AsInteger;
    Query1.Close;
  end;
//...
end;
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
interboy
Üye
Mesajlar: 84
Kayıt: 18 Mar 2005 02:52

Mesaj gönderen interboy »

teşekkür ederim arkadaşlar.
bu benim yazdığım sorguyu firebird de kullanabilirmiyim.
birde recep hocam sizin werdiğiniz kodla gelen değerleri chart a random data olarak weya başka bi yolu warsa nasıl gönderebilirim?

tşk..
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Yukarıdaki select yapısı Firebird de de aynen kullanılabilir.

Bu değerleri TChart bileşenine aktarıp grafik şeklinde gösterebilirsin.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla