Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL][PHP] Sortowanie tematów wg. postów
PiotrekM
post
Post #1





Grupa: Zarejestrowani
Postów: 130
Pomógł: 6
Dołączył: 20.12.2009

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


Witam,
potrzebuje posortować tematy wg. postów czyli tak jak na każdym forum. Temat z najnowszą odpowiedzią ląduje na górze.
Uklepałem takie zapytanie, ale nie działa. Nie sortuje oraz zamiast id tematu zwraca id postu :/
  1. SELECT * FROM zt_topics LEFT JOIN zt_posts ON zt_posts.topic = zt_topics.id GROUP BY zt_topics.id ORDER BY zt_posts.id DESC


Ten post edytował PiotrekM 15.02.2010, 15:14:15
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
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




Musisz tak pokombinować, aby przy łączeniu tych tabel post o najwyższym id zawsze był pierwszy w kolejności. GROUP BY działa bowiem na takiej zasadzie, że łączy do głównej tabeli pierwszy rekord z dodatkowej. Tak więc ważne, by ów rekord miał najwyższa datę (jako że masz autoincrement to jest on najwyższym id jednocześnie). Można więc to rozwiązać poprzez posortowanie tabeli postów według id już na etapie LEFT JOIN choćby.
Stąd Masz
  1. SELECT * FROM zt_topics LEFT JOIN (SELECT * FROM zt_posts ORDER BY id DESC) AS ordered_posts ON ordered_posts.topic = zt_topics.id GROUP BY zt_topics.id ORDER BY ordered_posts.id DESC
Takie coś nie jest jedynym rozwiązaniem jednak tego przypadku. Popatrz jak działa to "coś" i optymalizuj dalej (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 11.10.2025 - 16:33