Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Grupowanie i limit - limit dla każdego wyniku z grupowania?
Forum PHP.pl > Forum > Bazy danych > MySQL
alekto
Hej,

Mam z pozoru proste zapytanie, które wyszukuje mi najpopularniejsze (najliczniej sprzedane) produkty w bazie według kategorii. Potrzebuję nazwę produktu, jego cenę, nazwę kategorii do której należy:

  1. SELECT s.nazwa,count(*), s.cena
  2. FROM sprzedane s
  3. WHERE s.kategoria IN ('owoce', 'warzywa', 'przetwory')
  4. GROUP BY s.kategoria, s.nazwa
  5. ORDER BY s.kategoria, count(*) DESC


teraz jeśli dopiszę
limit 10

pokaże mi 10 najpopularniejszych produktów 'w ogóle'.

A jeśli chcę uzyskać wynik 10 produktów dla każdego grupowania według kategorii? Czyli chcę zobaczyć 10 najpopularniejszych owoców, 10 najp. warzyw i 10 najp. przetworów w sklepie.

Mam poczucie, że idę do tego trochę naokoło. Czy macie jakąś podpowiedź? wink.gif
MadMark
Nie pozostaje Ci nic innego, jak rozbić to na 3 podzapytania (przez to in w klauzuli where).
  1. SELECT nazwa,ilosc,cena FROM
  2. (SELECT nazwa,count(*) AS ilosc,cena WHERE kategoria ='warzywa' LIMIT 10) AS warzywa,
  3. (SELECT nazwa,count(*) AS ilosc,cena WHERE kategoria ='owoce' LIMIT 10) AS owoce,
  4. (SELECT nazwa,count(*) AS ilosc,cena WHERE kategoria ='przetwory' LIMIT 10) AS przetwory
  5. GROUP BY kategoria, nazwa
  6. ORDER BY kategoria, ilosc DESC;
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.