Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapytanie - sortowanie + wybór jednego rekordu z grupy
Forum PHP.pl > Forum > Bazy danych > MySQL
mkds
Witam,
mam mały problem z utworzeniem zapytania które zwracałoby mi jeden wynik z każdej grupy, a dokładniej tak:

mam tabelę o między innymi 3 kolumnach
id | user | data

jeden user moze miec wiele wpisów z roznymi datami. Teraz moje zadanie polega na wyciągnięciu rekordu z najnowszą datą każdego usera. Czyli jeśli są dane
1 | foo | 10.10.2010
2 | foo | 11.10.2010
3 | bar | 09.09.2010
4 | bar | 05.05.2010

To zapytanie powinno zwrócić
2 | foo | 11.10.2010
3 | bar | 09.09.2010

Próbowałem z zapytaniem
  1. SELECT * FROM tabelka GROUP BY tabelka.user ORDER BY DATA DESC;

no ale nic, zgodnie z przewidywaniami, najpierw grupuje a pozniej sortuje i wyniki nie są takie, jakich potrzeba.
Co zrobić aby najpierw sortował, a dopiero pozniej zbieral w grupy, albo jakiego zapytania uzyc, aby wydobyc tylko rekord z najnowszą data dla kazdego usera?

chodzi mi o jakies w miare proste SQL, bo danych jest bardzo duzo...
Prosze o pomoc smile.gif
nospor
czy ty przypadkiem daty nie trzymasz w polu varchar? Jesli tak to się nie dziw ze ci sortowanie nie dziala smile.gif
mkds
nie, data (a wlasciwie czas) jest typu timestamp
nospor
W takim razie having powinien pomoc:
  1. SELECT * FROM tabelka GROUP BY tabelka.user HAVING DATA=max(DATA)

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.