Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Sql en çok satılan [Çözüldü]
#1
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;
Cevapla
#2
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

Select TOP 1 sum(adet) as adet from SATILAN  GROUP BY URUNKODU ORDER BY SATILAN DESC

Böyle daha iyi Olur gibi.
Cevapla
#3
(03-07-2017, Saat: 20:44)dilo Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlSelam.

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;
Peyami Safa: "Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır". 
Cevapla
#4
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;
Cevapla
#5
(04-07-2017, Saat: 04:53)dilo Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlKodları 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...
Peyami Safa: "Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır". 
Cevapla
#6
Merhabalar ,
max(adet) değilde sum(adet) olarak düzeltmeniz gerekir.
Cevapla
#7
(04-07-2017, Saat: 09:01)vkamadan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhabalar ,
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.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#8
(04-07-2017, Saat: 09:06)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(04-07-2017, Saat: 09:01)vkamadan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhabalar ,
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

2017-07-04_09-34-56.png
Delphi Can'dır!
WWW
Cevapla
#9
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.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#10
(04-07-2017, Saat: 11:23)esistem Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
      
  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.

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Exclamation [ÇÖZÜLDÜ] Delphi EXE Resource TR Dil Sorunsalı mrmarman 6 179 12-07-2018, Saat: 11:09
Son Yorum: mrmarman
  [ÇÖZÜLDÜ]-Tip Dönüşümü - [TXSDecimal > Float ) hi_selamlar 6 171 02-07-2018, Saat: 12:19
Son Yorum: hi_selamlar
  [ÇÖZÜLDÜ]-n11.com Api Bağlantısı hi_selamlar 3 161 29-06-2018, Saat: 14:46
Son Yorum: hi_selamlar
  [ÇÖZÜLDÜ]-Başka Uygulamadaki MDIChild Form Handle Alma hi_selamlar 9 221 29-06-2018, Saat: 09:52
Son Yorum: hi_selamlar
  sha512 Kodlama ve Kod Çözme [ÇÖZÜLDÜ] 3ddark 7 191 26-06-2018, Saat: 11:45
Son Yorum: adelphiforumz



Konuyu Okuyanlar: 1 Ziyaretçi