Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Grupowanie wyników
Forum PHP.pl > Forum > Bazy danych > MySQL
woj_tas
Witam

Tabela produkty:
id, kategoria_id, nazwa

W jaki sposob pobrać 10 najnowszych rekordów z każdej kategorii?
kreciko
SELECT * FROM produkty WHERE kategoria_id IN (SELECT DISTINCT kategoria_id FROM produkty) ORDER BY id DESC LIMIT 10

nie wiem czy poprawne.
Noidea
W MySQL chyba trzeba ręcznie liczyć wiersze każdej kategorii:
  1. SELECT *
  2. FROM
  3. (
  4. SELECT *, IF( @cat_id <> kategoria_id, @row := 1, @row := @row + 1 ) AS row_number, @cat_id := kategoria_id
  5. FROM produkty
  6. ORDER BY kategoria_id, id DESC
  7. ) p
  8. WHERE p.row_number <= 10


warto też najpierw wyzerować zmienne takim zapytaniem:
  1. SET @row = 0, @cat_id = 0;
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.