Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sortowanie w forum
Forum PHP.pl > Forum > Bazy danych > MySQL
snipe
Mam tabele zwiazane z forum:

kategorie
id_kategorii
nazwa

tematy:
id_tematu
id_kategorii
czas_dodania
temat
tresc

posty:
id_postu
id_tematu
id_kategorii
czas_dodania
tresc


i chcialbym posortowac odpowiednio tematy w kategoriach wg ostatnio dodanego postu(czyli wg czasu_dodania posta), np.

Temat: |Ostatnia wypowiedz(ostatni post w tym temacie):
Jakis sobie topic |2005-11-14 16:31:45
Inny temat |2005-11-13 14:09:21

Zrobile cos takiego:

  1. SELECT posty.id_tematu,max(posty.czas_dodania) AS last_post,tematy.temat
  2. FROM posty,tematy WHERE posty.id_tematu=tematy.id_tematu && posty.id_kategorii=$id_category GROUP BY posty.id_tematu ORDER BY last_post DESC;


ale wtedy jesli nie mam zadnego posta w temacie to nie wyswietla mi w ogole tematu w daej kategorii :/
Za wszelka pomoc dzieki, bo ja juz naprawde nie wiem jak to polaczyc :/
orestes
  1. GROUP BY posty.id_tematu
skup się na tym winksmiley.jpg
Synaps
  1. SELECT posty.id_tematu,max(posty.czas_dodania) AS last_post,tematy.temat
  2. FROM posty,tematy WHERE posty.id_tematu=tematy.id_tematu && posty.id_kategorii=$id_category GROUP BY posty.id_tematu ORDER BY last_post DESC;


Jeśli zakładasz że tematy które nie posiadają żadnych postów mają byc również wyświetlane, przy takiej postaci jako powyżej musisz skorzystac z RIGHT JOIN'a.
Wybacz że nie napisze dokładnie nowej wersji zapytania, ale uważam że więcej się nauczysz jak sam to sobie przeciwczysz aaevil.gif Wystarczy google+right join lub left join ale to już zapewne sam zrozumiesz.
snipe
Synaps nie badz taki zarzuc kodem tongue.gif Ja sie najszybciej ucze na przykladzie a ze ten przyklad dotyczy mnie to jeszcze szybciej guitar.gif biggrin.gif

Edit:
Udalo mi sie zrobic cos takiego:

  1. SELECT u.user_name,p.id_user,t.id_topic,topic, max(p.time_added) AS last_post
  2. FROM forum_posts p, users_new u RIGHT JOIN forum_topics t ON p.id_topic=t.id_topic AND p.id_category=t.id_category OR u.id_user=t.id_user WHERE t.id_category=3 GROUP BY t.id_topic ORDER BY last_post DESC;


Zmienilem troche nazwy, ale raczej wiadomo o co chodzi smile.gif Teraz mam takie pytanko, jak zrobic ze jezeli topic nie ma postow(null) ale jego data dodania bedzie nowsza od daty dodania jakiegos posta w innym temacie to bedzie on wyswietlany pierwszy na liscie questionmark.gif
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.