Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zapytanie - sortowanie + wybór jednego rekordu z grupy
mkds
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 20.10.2010

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




czy ty przypadkiem daty nie trzymasz w polu varchar? Jesli tak to się nie dziw ze ci sortowanie nie dziala smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mkds
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 20.10.2010

Ostrzeżenie: (0%)
-----


nie, data (a wlasciwie czas) jest typu timestamp
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




W takim razie having powinien pomoc:
  1. SELECT * FROM tabelka GROUP BY tabelka.user HAVING DATA=max(DATA)



--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 13:12