[PHP] Zapytanie ustawiające rekordy

Witam!

Muszę wyedytować moje zapytanie tak, aby najwyżej (pierwszy) był temat w którym najpóźniej odpowiedziano.

Teraz mam coś takiego:

= mysql_query("SELECT * FROM `topics` LIMIT $start, $perPage") or die("Blad wyboru tabeli");$i = 0;while ($record = mysql_fetch_array($rezultat, MYSQL_ASSOC)) {
SELECT t.* FROM topics t LEFT JOIN posts p ON p.topic_id=t.id ORDER BY p.add_date DESC

cos takiego ?

przy założeniu że:

  1. w tabeli posts topic_id odwołuje sie do id topika

  2. add_date - data postu

No, nie do końca bo co prawda jakoś tam działa, ale wyświetla mi teraz temat tyle razy, ile jest w nim postów.

Pomocy

Najprostsze rozwiązanie:

"SELECT * FROM `topics` ORDER BY data DESC LIMIT $start, $perPage"

ORDER BY - sortuj

data - przez jakie pole ma sortować

DESC - od najstarszego (największego) do najnowszego (najmniejszego)

SELECT t.* FROM topics t INNER JOIN posts p ON p.topic_id=t.id ORDER BY p.add_date DESC

lub

SELECT t.* FROM topics t LEFT JOIN posts p ON p.topic_id=t.id GROUP BY t.id ORDER BY p.add_date DESC

Dzięki ale, to pierwsze działa tak samo jak wcześniej, a to drugie: Tematów już jest normalna ilość, ale nie segregują się one datą postów…

leone , jak nie wiesz o czym mówisz to nie pisz, przeczytaj jeszcze raz pierwszy post, i zobacz o co mi chodzi…

Pomocy i pozdrawiam.

master of disaster nikt nie jest w stanie Ci pomóc, bo nie napisałeś poprawnie postu. Podaj strukturę tabel z przykładowymi danymi i co chcesz osiągnąć. Najlepiej daj zrzut tabel żeby sobie wkleić w phpmyadminie i będzie wiadomo. Bo wypisywanie po przecinku “mam taka kolumnę i takie pola” to w takich sprawach nie ma sensu.

Topics:

topics.png

Posts:

postsy.png

Powinno działać, chyba że nie rozumiem co chcesz osiągnąć. Poza tym dziwny format daty masz w mysql.

SELECT topics.* FROM topics LEFT JOIN posts ON topics.id = posts.topic_id GROUP BY posts.topic_id ORDER BY posts.data DESC

//edit INNER JOIN na LEFT JOIN, żeby pokazywało też tematy które nie mają postów

Może dlatego że to było varchar a nie date. Teraz zmieniłem na DATETIME i mam tak: 2010-03-13 19:42:17

Tylko że to Twoje nie działa do końca… Sortuje tematy tak że na górze są te które były najpóźniej napisane (i prawidłowo) ale ja chce jeszcze tak jak na forach internetowych, najwyżej jest te w którym najpóźniej ODPOWIEDZIANO.

Pozdrawiam.

  • nie, sortuje tak, że na górze jest ten temat, w którym ostatnio pojawił się post

To u mnie coś nie działa…