GROUP BY hatası

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
sako
Üye
Mesajlar: 477
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

GROUP BY hatası

Mesaj gönderen sako »

Kod: Tümünü seç

IBQUERY1.close;
IBQUERY1.sql.clear;
IBQUERY1.SQL.Add('select * from KAYITLAR where sonuc like ''%'+BOX1.Text+'%'''+ 'and sonuc_idari like ''%'+BOX2.Text+'%'''+ 'and sonuc_mali like ''%'+BOX3.Text+'%'''+ 'and adi like ''%'+ad.Text+'%'''+ 'and SOYADI like ''%'+SOYAD.Text+'%'''+ 'and GOREVI like ''%'+GOREV.Text+'%'''+ 'and GOREV_YERI like ''%'+GOREVYERI.Text+'%'''+ 'and FIIL like ''%'+FIIL.Text+'%'''+ 'and a_s_o like '''+TURU.Text+'%'''+ 'and FIIL like ''%'+FIIL.Text+'%'' group BY SORUSTURMA_sayi);
IBQUERY1.open;
yukarıdaki kodu yazınca aşağıdaki hatayı alıyorum. Forumda aradım ama benim kodla alakalı bir sonuca varamadım.

Kod: Tümünü seç

Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: GROUP BY hatası

Mesaj gönderen conari »

group BY ın ne iş yaptığını araştırsaydınız.
bu toplam yapıldığında (sum) v.s. kullanılır.

Kod: Tümünü seç

group BY SORUSTURMA_sayi
bunu kaldırın.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
sako
Üye
Mesajlar: 477
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Re: GROUP BY hatası

Mesaj gönderen sako »

Kod: Tümünü seç

SORUSTURMA_sayi
herhangi bir toplama işlemi değil ki. Sadece evrak kayıt numarası. Evrak kayıt numaraları aynı olanları gruplandırmak istiyorum sadece. Herhangi bir matematiksel işlem yok yani...
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: GROUP BY hatası

Mesaj gönderen emin_as »

Kod: Tümünü seç

select evrakkayitno,count(*) from table group by evrakkayitno
Şeklinde yazarsan her evrakkayitno nun kaç kere listelendigini de ögrenirsin. Amacin sadece kayitlievrak nolari bir kez görmek ise distinct i kullanabilirsin. Distinct ile yazınca group by i yazmana gerek kalmaz.

Kod: Tümünü seç

select distinct evrakkayitno from table
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: GROUP BY hatası

Mesaj gönderen aslangeri »

s.a.
ozaman sizin gruplamadan kastınız sıralama.
order by ı deneyin.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
sako
Üye
Mesajlar: 477
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Re: GROUP BY hatası

Mesaj gönderen sako »

Hayır sıralama değil. Yapmak istediğim şu. Yukarıda verdiğim sorgu kodu ile bilgileri sıralıyorum. Bilgiler şu şekilde listeleniyor.

Tarih sayi
01.01.2009 1254
01.01.2009 1254
01.01.2009 1254
10.12.2009 1387
10.01.2009 1254

01.01.2009 tarih ve 1254 sayılı kayıtlar 3 tane peş peşe geldi. Binim yapmak istediğim aynı tarih sayılı kayıtları tek bir kere göstermek. Şu şekilde

Tarih sayi
01.01.2009 1254
10.12.2009 1387
10.01.2009 1254
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: GROUP BY hatası

Mesaj gönderen conari »

sako yazdı:

Kod: Tümünü seç

SORUSTURMA_sayi
herhangi bir toplama işlemi değil ki. Sadece evrak kayıt numarası. Evrak kayıt numaraları aynı olanları gruplandırmak istiyorum sadece. Herhangi bir matematiksel işlem yok yani...
Gruplandırdığınız zaman bazı değerler üst üste çakışır. ya toplam alınır, ya ortalama yapılır v.s.
farklı farklı olabilecek alanları raporun dışına çıkarmanız lazım.

Kod: Tümünü seç

select tarih, evrakkayitno from table where ...................
group by tarih, evrakkayitno
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: GROUP BY hatası

Mesaj gönderen aslangeri »

peki tablonuzda sadece tarih ve sayı alanları mı var.
select ifadesinde * kullanmışsınız diğer alanları ne yapacak bu durumda.
hangi kaydınkini alacak? onlarda aynı ise group by da aynı olan alanların hepsini yazmanız lazım.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: GROUP BY hatası

Mesaj gönderen sabanakman »

Grup sorgularda bir grup kayda karşılık birden fazla değer gelmektedir. O yüzden group by ile gruplanan değerler dışında kalan bilgileri direk sorgu içinde listelemesi için yazılamazlar. Önce bunun mantığını kavrayıp ona göre sorgu yazmalısınız. Yani

Kod: Tümünü seç

select Tarih, Sayi from KAYITLAR
where ....
group by Tarih, Sayi
şeklinde sorgu yazmak zorundasın. Çünkü diğer alanları direk select içine eklemek bir mantık hatası olacaktır. Hatta sadece sadece bu alanların çeşitlerini göstermek isteyen kod aşağıdaki gibi de gruplamadan distinct sorgusuyla da olabilir.

Kod: Tümünü seç

select distinct Tarih, Sayi from KAYITLAR
where ....
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
sako
Üye
Mesajlar: 477
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Re: GROUP BY hatası

Mesaj gönderen sako »

'select * from KAYITLAR ............... şeklide değilde 'select tarih,sayi from KAYITLAR ............ ieklinde yaoınca hemen hemen istediğim gibi oldu. Gerisini ben kendime göre değiştiririm.

Tşk.
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
Cevapla