Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 22.11.2008 Ostrzeżenie: (0%)
|
Witam, wiem że temat był dużo razy poruszany ale nadal nie potrafię zastosować go do swoich potrzeb.
Mam tabelę:
i chcę wyciągnąć najświeższą wiadomość dla id uzytkownika="30" , gdzie grupowanie jest po polu "grupa", a najświeższa wiadomość to ta, która ma największe "id".
wyciąga mi
a potrzebne
jakiś pomysł? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D |
Mysql w takich wypadkach jak podałeś zwraca wartość kolumny dla pierwszego wiersza danej grupy. To co chcesz więc osiągnąć, to ustawić wiersze we własciwej kolejności zanim dojdze do grupowania. Jako że ORDER BY wykonuje się dopiero po GROUP BY, to musisz do grupowania wysłać podzapytanie z posortowanymi wynikami. W tym wypadku musisz więc "odwrócić" tabelę w podzapytaniu i potem ją pogrupować.
A co do celu, to chyba jest taki, by użytkownik widział najświeższe wiadomości związane z sobą (stąd sprawdzanie from_id i to_id) w każdej z grup. |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 282 Pomógł: 89 Dołączył: 12.04.2011 Ostrzeżenie: (0%)
|
Mysql w takich wypadkach jak podałeś zwraca wartość kolumny dla pierwszego wiersza danej grupy. To co chcesz więc osiągnąć, to ustawić wiersze we własciwej kolejności zanim dojdze do grupowania. Przecież to kompletnie przeczy temu co można przeczytać w manualu mysqla, do którego link podałem. I to dokładny link, omawiający właśnie taką sytuację. Naprawdę tak trudno sprawdzić? Można mówić - u mnie na moim systemie, na mojej wersji mysql, teraz zwracany jest pierwszy wiersz z grupy. Nic więcej. http://bugs.mysql.com/bug.php?id=60735 Tutaj mamy bardzo konkretny przykład - ktoś był przekonany o tym, że właśnie pierwszy wiersz powinien być zawsze zwracany, oparł na tym założeniu swój system, robiąc dokładnie to co proponujesz, najpierw sortował, a potem grupował, po czym jakież było jego zdziwienie, gdy po przejściu na inną wersję okazało się, że zwracany jest ostatni wiersz zamiast pierwszego. Zgłosił więc bug, ale dostał bardzo krótką odpowiedź, odsyłającą do wyżej wspomnianego linku. |
|
|
|
menda90 Problem z sortowaniem przed grupowaniem 27.04.2011, 17:03:46
pmir13 Dlaczego potrzebujesz grupowania?
Używanie w sele... 27.04.2011, 20:34:55
thek pmir: To że przeczy dokumentacji, nie znaczy że My... 28.04.2011, 10:26:34
pmir13 Sam fakt, że taka składnia nie przejdzie na sql se... 28.04.2011, 12:54:04 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 14:43 |