

Mam trzy tabele: user, forum, forum_posty.
To co nas interesuje z user, to tylko imie i nazwisko.
Tabela forum zawiera nazwy tematów, datę założenia, id, autora oraz czy temat jest widoczny.
Tabela forum_posty zawiera id posta, id tematu, autora, treść, datę i czy jest widoczny.
Problem:
Chcę wyświetlić listę tematów wg najnowszych postów, wraz z datą ostatniego i liczbą postów z tematu.
Urodziłem takie zapytanie:
SELECT forum.topic_id AS id,nazwa, CONCAT(`user`.`imie`," ",`user`.`nazwisko`) AS `autor`,`forum`.`data` AS `data`, (SELECT COUNT(post_id) FROM `forum_posty` WHERE `forum_posty`.`topic_id`=`forum`.`topic_id` AND widoczny=1) AS liczba_postow, (SELECT `data` FROM `forum_posty` WHERE `forum_posty`.`topic_id`=`forum`.`topic_id` AND widoczny=1 ORDER BY `post_id` DESC LIMIT 1) AS ostatni_post FROM `forum` LEFT JOIN `user` ON `user`.`user_id`=`autor` WHERE `aktywny`=1 ORDER BY ostatni_post DESC
Zapytanie daje oczekiwany rezultat. Jednak trochę martwi mnie to, że są tutaj aż trzy zapytania. Oczywiście na ten projekt to nie problem, w sumie nie wiadomo, czy kiedykolwiek będę musiał przejmować się wydajnością, jednak zawsze warto takie rzeczy wiedzieć

Pozdrawiam.