Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] GROUP BY i LIMIT
Forum PHP.pl > Forum > Przedszkole
noob89
Witam,
Mam taką tabelę w bazie danych:
Kod
UserId | Dane | Count
-------+------+------
   1   |  44  |  10
   1   |  44  |  8
   1   |  44  |  5
   1   |  44  |  6
   1   |  44  |  4
   2   |  44  |  22
   3   |  44  |  3
   2   |  44  |  25
   2   |  44  |  6
   2   |  44  |  1
   2   |  44  |  2
   3   |  44  |  26
   3   |  44  |  5
   3   |  44  |  7

I teraz mam problem. Muszę za pomocą jednego zapytania SQL wybrać po 3 największe rekordy (Count) dla każdego użytkownika (UserId).
Próbowałem już robić to z GROUP BY... z LIMIT ale jak do tej pory nie osiągnąłem zamierzonego efektu.

Pozdrawiam i proszę o pomoc.
sadistic_son
  1. SELECT `UserId`, `Dane`, MAX(`COUNT`) FROM `tabela` GROUP BY `UserId` LIMIT 3.
noob89
To wyciąga tylko 3 rekordy a ja potrzebuję taki wynik:
Kod
UserId | Dane | Count
-------+------+------
   1   |  44  |  10
   1   |  44  |  8
   1   |  44  |  6

   2   |  44  |  25
   2   |  44  |  22
   2   |  44  |  6

   3   |  44  |  26
   3   |  44  |  7
   3   |  44  |  5
sadistic_son
  1. SELECT `UserId`, `Count` FROM tabela ORDER BY `UserId` ASC AND `Count`DESC
noob89
Ale to zapytanie i tak mi nie wybierze po 3 rekordy dla każdego użytkownika (UserId). To tylko wyświetli wszystkie znajdujące się rekordy w tabeli oraz je posortuje.
sadistic_son
Nie zrobisz tego w jednym zapytanie.
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.