Yorumları: 59
Konuları: 27
Kayıt Tarihi: 03-02-2017
Rep Puanı: 59 Başlangıç
03-07-2017, Saat: 20:44
(Son Düzenleme: 04-07-2017, Saat: 16:05, Düzenleyen: dilo.)
Selam.
Sql de en çok satılan ürünü bulmak istiyorum, URUNKODU alanım olmasına rağmen 'URUNKODU' not found hatası alıyorum bunun sebebi ne olabilir?
SQL.Add('Select Max(ADET) As ADET From SATILAN');
SQL.Add('Where TARIH BETWEEN :TRH1 And :TRH2 Order By TARIH ASC');
ParamByName('TRH1').AsDate := StartTarih.Date;
ParamByName('TRH2').AsDate := EndTarih.Date;
while Not Eof do
begin
Sheet.Cells[Row, 1] := FieldByName('URUNKODU').AsString;
Yorumları: 176
Konuları: 0
Kayıt Tarihi: 01-09-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 556 Acemi
03-07-2017, Saat: 21:36
(Son Düzenleme: 04-07-2017, Saat: 08:13, Düzenleyen: TescilsizUzman.)
while Not Eof do
begin
Sheet.Cells[Row, 1] := FieldByName('URUNKODU').AsString;
Burada hata veriyordur O zaman Yukarıdaki Sorguda zaten Öyle bir durum yok.
En Çok Satan ürünü Almak istiyorsanız da
[Ars=sql]Select TOP 1 sum(adet) as adet from SATILAN GROUP BY URUNKODU ORDER BY SATILAN DESC[/ars]
Böyle daha iyi Olur gibi.
Yorumları: 907
Konuları: 68
Kayıt Tarihi: 30-06-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 8.450 Üstad
(03-07-2017, Saat: 20:44)dilo Adlı Kullanıcıdan Alıntı: Selam.
Sql de en çok satılan ürünü bulmak istiyorum, URUNKODU alanım olmasına rağmen 'URUNKODU' not found hatası alıyorum bunun sebebi ne olabilir?
SQL.Add('Select Max(ADET) As ADET From SATILAN');
SQL.Add('Where TARIH BETWEEN :TRH1 And :TRH2 Order By TARIH ASC');
ParamByName('TRH1').AsDate := StartTarih.Date;
ParamByName('TRH2').AsDate := EndTarih.Date;
while Not Eof do
begin
Sheet.Cells[Row, 1] := FieldByName('URUNKODU').AsString;
FieldByName ile okutmaya çalıştığın alanı SELECT cümlesine eklememişsin, ORDER BY Tarih kısmına gerek yok, sana WHERE kısmında tarih olmasy yeter, SQL sorgusunu şöyle yazarsan sonuç alırsın;
SQL.Add('Select URUNKODU, Max(ADET) As ADET From SATILAN ');
SQL.Add('Where TARIH BETWEEN :TRH1 And :TRH2 GROUP BY URUNKODU ORDER BY Adet DESC ');
ParamByName('TRH1').AsDate := StartTarih.Date;
ParamByName('TRH2').AsDate := EndTarih.Date;
while Not Eof do
begin
Sheet.Cells[Row, 1] := FieldByName('URUNKODU').AsString;
YouTube Delphi Tips
"Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır" Peyami Safa
Yorumları: 59
Konuları: 27
Kayıt Tarihi: 03-02-2017
Rep Puanı: 59 Başlangıç
04-07-2017, Saat: 04:53
(Son Düzenleme: 04-07-2017, Saat: 04:55, Düzenleyen: dilo.)
Kodları kendime uyarladım, Fakat bir türlü ürünlerin toplamını alamadım saçma sapan sonuçlar çıkıyor.
Örnek:
Motosiklet 32 toplam adet var
Modem 22 toplam adet var fakat
Motosiklet 7 adet çıkıyor
Modem 13 adet gibi saçma sapan çıkıyor.
SQL.Add('Select URUNKODU, URUN, MODEL, ADET, Max(ADET) As ADET From SATILAN');
SQL.Add('Where TARIH Between :TRH1 And :TRH2 Group By URUNKODU Order By ADET Desc');
ParamByName('TRH1').AsDate := StartTarih.Date;
ParamByName('TRH2').AsDate := EndTarih.Date;
while Not Eof do
begin
AdetSay := AdetSay + FieldByName('ADET').AsInteger;
Sheet.Cells[Row, 1] := FieldByName('URUNKODU').AsString;
Sheet.Cells[Row, 2] := FieldByName('URUN').AsString;
Sheet.Cells[Row, 3] := FieldByName('MODEL').AsString;
Sheet.Cells[Row, 4] := AdetSay;
Inc(Row);
Next;
end;
Yorumları: 907
Konuları: 68
Kayıt Tarihi: 30-06-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 8.450 Üstad
(04-07-2017, Saat: 04:53)dilo Adlı Kullanıcıdan Alıntı: Kodları kendime uyarladım, Fakat bir türlü ürünlerin toplamını alamadım saçma sapan sonuçlar çıkıyor.
Örnek:
Motosiklet 32 toplam adet var
Modem 22 toplam adet var fakat
Motosiklet 7 adet çıkıyor
Modem 13 adet gibi saçma sapan çıkıyor.
SQL.Add('Select URUNKODU, URUN, MODEL, ADET, Max(ADET) As ADET From SATILAN');
SQL.Add('Where TARIH Between :TRH1 And :TRH2 Group By URUNKODU Order By ADET Desc');
ParamByName('TRH1').AsDate := StartTarih.Date;
ParamByName('TRH2').AsDate := EndTarih.Date;
while Not Eof do
begin
AdetSay := AdetSay + FieldByName('ADET').AsInteger;
Sheet.Cells[Row, 1] := FieldByName('URUNKODU').AsString;
Sheet.Cells[Row, 2] := FieldByName('URUN').AsString;
Sheet.Cells[Row, 3] := FieldByName('MODEL').AsString;
Sheet.Cells[Row, 4] := AdetSay;
Inc(Row);
Next;
end;
Where kısmındaki tarih aralığını kaldırdığında istediğin sonuçları elde edebiliyor musun...
YouTube Delphi Tips
"Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır" Peyami Safa
Yorumları: 172
Konuları: 16
Kayıt Tarihi: 10-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 5.340 Üstad
04-07-2017, Saat: 09:01
(Son Düzenleme: 04-07-2017, Saat: 09:01, Düzenleyen: vkamadan.)
Merhabalar ,
max(adet) değilde sum(adet) olarak düzeltmeniz gerekir.
Yorumları: 2.146
Konuları: 259
Kayıt Tarihi: 09-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 4.616 Uzman
(04-07-2017, Saat: 09:01)vkamadan Adlı Kullanıcıdan Alıntı: Merhabalar ,
max(adet) değilde sum(adet) olarak düzeltmeniz gerekir.
+1
Sum ilgili field'ın toplamını verir.
Max ilgili field'daki en büyük olanı verir.
Yorumları: 262
Konuları: 26
Kayıt Tarihi: 29-07-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 317 Acemi
(04-07-2017, Saat: 09:06)yhackup Adlı Kullanıcıdan Alıntı: (04-07-2017, Saat: 09:01)vkamadan Adlı Kullanıcıdan Alıntı: Merhabalar ,
max(adet) değilde sum(adet) olarak düzeltmeniz gerekir.
+1
Sum ilgili field'ın toplamını verir.
Max ilgili field'daki en büyük olanı verir.
Artı (+) Puanlar için
Delphi Can'dır!
Yorumları: 883
Konuları: 35
Kayıt Tarihi: 12-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.853 Uzman
04-07-2017, Saat: 11:23
(Son Düzenleme: 04-07-2017, Saat: 11:24, Düzenleyen: esistem.)
Merhaba,
Arkadaşların dediği gibi SUM toplam alır, MAX en büyük işlemi gösterir, ayrıca;
SQL.Add('Select URUNKODU, URUN, MODEL, ADET, Max(ADET) As ADET From SATILAN');
SQL.Add('Where TARIH Between :TRH1 And :TRH2 Group By URUNKODU Order By ADET Desc');
ParamByName('TRH1').AsDate := StartTarih.Date;
ParamByName('TRH2').AsDate := EndTarih.Date;
yukarıdaki kullanım çalışmayacaktır. SUM, AVG, MAX, MIN gibi kullanımlarda GROUP BY önüne gelen bütün alanlara uygulanmalıdır. yani sizdeki kullanımda ;
SQL.Add('Select URUNKODU, URUN, MODEL, SUM(ADET) As ADET From SATILAN');
SQL.Add('Where TARIH Between :TRH1 And :TRH2 Group By URUNKODU, URUN, MODEL Order By ADET Desc');
ParamByName('TRH1').AsDate := StartTarih.Date;
ParamByName('TRH2').AsDate := EndTarih.Date;
şeklinde olmalıdır.
Yorumları: 59
Konuları: 27
Kayıt Tarihi: 03-02-2017
Rep Puanı: 59 Başlangıç
04-07-2017, Saat: 13:31
(Son Düzenleme: 04-07-2017, Saat: 13:36, Düzenleyen: DelphiCan.)
(04-07-2017, Saat: 11:23)esistem Adlı Kullanıcıdan Alıntı:
SQL.Add('Select URUNKODU, URUN, MODEL, SUM(ADET) As ADET From SATILAN');
SQL.Add('Where TARIH Between :TRH1 And :TRH2 Group By URUNKODU, URUN, MODEL Order By ADET Desc');
ParamByName('TRH1').AsDate := StartTarih.Date;
ParamByName('TRH2').AsDate := EndTarih.Date;
while Not Eof do
begin
AdetSay := AdetSay + FieldByName('ADET').AsInteger;
Sheet.Cells[Row, 1] := FieldByName('URUNKODU').AsString;
Sheet.Cells[Row, 2] := FieldByName('URUN').AsString;
Sheet.Cells[Row, 3] := FieldByName('MODEL').AsString;
Sheet.Cells[Row, 4] := AdetSay;
Inc(Row);
Next;
end;
Emeği geçe herkese teşekkür ederim, fakat doğru toplamları alamıyorum.
|