SUM

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
dost
Üye
Mesajlar: 104
Kayıt: 08 Oca 2004 11:33

SUM

Mesaj gönderen dost »

Merhaba,

procedure TForm1.Button1Click(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('SELECT URUN_ID,SUM(URUN_MIKTARI) FROM STOK.DB');
Query1.SQL.Add('GROUP BY URUN_NO');
//ShowMessage(Query1.SQL.Text);
Query1.Open;

Edit1.Text:=intToStr(Query1.FieldByName('Sum of URUN_MIKTARI').asInteger);
end;

Delphi7'de aşağıdaki hatayı vermekte,

'When GROUP BY exists, every simple field in projectors must be in GROUP BY.'

yardımcı olabilirmisiniz.

teşekkürler.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7602
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

bu tip ifadelerde bir alanı seçebilmek için mutlaka group by kısmında yer alması lazım. Senin ifadene göre sadece urun_no alanını seçebilirsin.

urun_id group by kısmında olmadığı için silmelisin.

Kolay gelsin.
dost
Üye
Mesajlar: 104
Kayıt: 08 Oca 2004 11:33

Mesaj gönderen dost »

Mustafa bey,

"urun_id group by kısmında olmadığı için silmelisin."

Sildiğimde ise;

'Query1:Field'URUN_ID'not found'

hatası veriyor, denemediğim yol kalmadı.

URUN_NO'suna göre URUN_MIKTARI'nı nasıl toplatabilirim.

Yardımcı olabilirmisiniz?

Teşekkürler.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

query nesnesinde alanları daha onceden eklediysen urun_no alanını oradan sil
urun_no ya gore gruplayarak basit toplama

select sum(miktar) from tablo group by urun_no

eger bir kriter de vermen gerekirse where yerine having kullanmalısın
ÜŞENME,ERTELEME,VAZGEÇME
dost
Üye
Mesajlar: 104
Kayıt: 08 Oca 2004 11:33

Mesaj gönderen dost »

Merhaba,

Query1 nesnesindeki tanımladığım tüm alanları sildiğimde çalıştı.

Yardımınız için teşekkür ederim.
sako
Üye
Mesajlar: 476
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Mesaj gönderen sako »

Sum ile toplama işlemini yaparken belli kriterlerde toplama nasıl yaptırabilirim. Bu toplama işlemi ile Query deki istenen alana ait bütün değerleri topluyor.
2 adet table var birbirine bağlı bunlar. Müşterinin nosunu girdiğim zaman o müşteriye ait alınan ürünler listeleniyor. Toplama yaparken görüntülenen kayıtlar değil tabledeki bütün kayıtların toplamı veriliyor. Ben sadece istediğim müşterinin toplamını nasıl alabilirim acaba..

kolay gelsin...
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ı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

sako yazdı:Sum ile toplama işlemini yaparken belli kriterlerde toplama nasıl yaptırabilirim. Bu toplama işlemi ile Query deki istenen alana ait bütün değerleri topluyor.
2 adet table var birbirine bağlı bunlar. Müşterinin nosunu girdiğim zaman o müşteriye ait alınan ürünler listeleniyor. Toplama yaparken görüntülenen kayıtlar değil tabledeki bütün kayıtların toplamı veriliyor. Ben sadece istediğim müşterinin toplamını nasıl alabilirim acaba..

kolay gelsin...
Where kullarak yapabilirsin. Where e istediğin müşterinin numarasını girersen sadece o müşteriye ait değerleri toplar.
sako
Üye
Mesajlar: 476
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Mesaj gönderen sako »

ibQuery1.Close;
ibQuery1.SQL.Clear;
ibquery1.SQL.Add('select sum(borc) from alinan where adi like ''%'+ edit1.Text +'%''');
Query1.open;

yukardaki kodu çalıştırıyorum fakat hiçbir kayıt görüntülemiyor. Ayrıca Burdan elde ettiğim değeri ;
edit1.text:=ibquery1.SQL.Add('select sum(borc) from alinan where adi like ''%'+ edit1.Text +'%''');

şeklinde denedim (belki saçma bi kod oldu ama beceremedim)
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ı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

sako yazdı: edit1.text:=ibquery1.SQL.Add('select sum(borc) from alinan where adi like ''%'+ edit1.Text +'%''');

şeklinde denedim (belki saçma bi kod oldu ama beceremedim)
bunun yerine

Kod: Tümünü seç

...//Query ile yapacağınız sorgulama

edit1.Text := Query1.Fields[0].AsString;
demeniz gerekiyor
onaydin

Mesaj gönderen onaydin »

Sql inizi bu şekilde kullanacaksanız doğru bir sonuç alamayabilirsiniz,
mesela adı ali olan bir müşterinin detayını görmek istedğinizde buna ek olarak size halim adında olanları da getirir.
Cevapla