Yaptığım bir e-ticaret işimde raporlama kısmında lazım olmuştu makale haline getirdim.
Örnek: Verilen sipariş ürünlerinden en çok sipariş verilen ürünleri ve bunların sayısını büyükten küçüğe sıralayıp liste halinde veren sorgu.
Veritabanı tabloları
1) siparisler
2) siparis_urunleri (siparis_id Foreign Key ile siparisler tablosuna bağlı, urun_id Foreign Key ile urunler tablosuna bağlı)
3) urunler
Sorgu:
siteEntites db = new siteEntities(); var results = db.siparis_urunler.GroupBy(g => g.urun_id).Where(w => w.Count()>1) .Select(s => new { s.FirstOrDefault().urunler.urun_adi, adet = s.Count() }).Distinct().Take(5).OrderByDesceding(o=>o.adet).ToList();Çıktısı:
Ürün Adı | Adet |
---|---|
Flash Bellek | 50 |
CD | 42 |
Usb Kablo | 33 |
Monitör | 20 |
Hoparlör | 15 |
1) Önce verilerimi GrupBy ile urun_id ye göre grupluyorum
2) Tekrar eden dediğimiz için Where ile sayısı 1 den fazla olanları filtreliyorum
3) FirstOrDefault diyerek urunler tablosuna çıkıp ürünün adını alıyorum
4) Grupladığım ürünün sayısını alıyorum
5) Büyükten küçüğe sıralıyorum
İyi Kodlar!
Yorumlar
Yorum Gönder