SQL sorgulama İle en çok satılan 3 ürünün listelenmesi?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
hasansavci
Üye
Mesajlar: 9
Kayıt: 23 Eyl 2010 06:42
Konum: Muğla

SQL sorgulama İle en çok satılan 3 ürünün listelenmesi?

Mesaj gönderen hasansavci »

Arkadaşlar benim hazırladığım bir projede

loglar.db

ürün adı adet fiyatı
masa 2 3,00
kalem 1 1,00
defter 5 4,00
masa 3 3,00
kalem 6 1.00


şeklinde kayıtlı,

ben burda adet sayısı en fazla olan ürünleri guruplandırarak ( masa 5, kalem 7 vs) en fazla adet sayısı bulunan örneğin 3 ürünü listelemek istiyorum.Bu konuda yardımınız olursa sevinirim.

Saygılarımla
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: SQL sorgulama İle en çok satılan 3 ürünün listelenmesi?

Mesaj gönderen brs »

Kod: Tümünü seç

procedure TForm3.ListeleClick(Sender: TObject);
begin
  try
    ListView1.Items.Clear;
    with Arsiv do
    begin
      Close;
      SQL.Text := 'Select * From Arsiv where URUN like ' + QuotedStr('%' + Edit1.Text + '%') + ' order by URUN ASC';
      Open;
      while Not Eof do
      begin
        with ListView1.Items.Add do
        begin
          Caption := IntToStr(Form3.ListView1.Items.Count);
          SubItems.Add(FieldByName('SIRANO').AsString);
          SubItems.Add(FieldByName('URUN').AsString);
          Next;
          Bilgi.Caption := 'Listeleme İşlemi Başarıyla Tamamlandı!';
        end;
      end;
    end;
  except
    Application.MessageBox('Listeleme İşlemleri Sırasında Hata Oluştu!', 'Hata',
      MB_Ok or MB_ICONQUESTION);
  end;
end;
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: SQL sorgulama İle en çok satılan 3 ürünün listelenmesi?

Mesaj gönderen mrmarman »

hasansavci yazdı:Arkadaşlar benim hazırladığım bir projede

loglar.db

ürün adı adet fiyatı
masa 2 3,00
kalem 1 1,00
defter 5 4,00
masa 3 3,00
kalem 6 1.00


şeklinde kayıtlı,

ben burda adet sayısı en fazla olan ürünleri guruplandırarak ( masa 5, kalem 7 vs) en fazla adet sayısı bulunan örneğin 3 ürünü listelemek istiyorum.Bu konuda yardımınız olursa sevinirim.

Saygılarımla
SQL sorgularda
1. Ürünleri gruplandırmak için GROUP BY veya SELECT satırında DISTINCT kullanabilirsin.

Kod: Tümünü seç

SELECT URUNADI FROM LOGLAR GROUP BY URUNADI  ORDER BY URUNADI
bu size (yazım hatası yapmamışsanız) sadece masa, kalem ve defter satırlarında birer tane döndürür...

2. En fazla olan değeri bulmak için MAX ifadesi kullanılır.

Kod: Tümünü seç

SELECT MAX(ADET) as ADET FROM LOGLAR WHERE URUNADI = 'masa'
bu size masa içeren kayıtlardan sadece en fazla değeri olan 3 olan tek bir kaydı geri döndürür..

3. şimdi bu iki yapıyı birleştirelim.

Kod: Tümünü seç

SELECT URUNADI, MAX(ADET) as ADET FROM LOGLAR GROUP BY URUNADI ORDER BY URUNADI
Resim
Resim ....Resim
Cevapla