У меня есть 3 таблицы:
Сообщение, Тема и Подфорум.
Подфорум имеет много Тем, а Тема имеет много Сообщений.
Я пытаюсь для получения последнего (на данный момент максимального ID) сообщения в каждом подфоруме.
Это то, что я пробовал до сих пор:
SELECT
p1.id,
p1.thread_id,
Subforums.id as subforum_id
FROM Posts p1 LEFT JOIN Posts p2
ON (p1.thread_id = p2.thread_id AND p1.id < p2.id)
LEFT JOIN Threads
ON p1.thread_id = Threads.id
AND p2.thread_id = Threads.id
LEFT JOIN Subforums
ON Threads.subforum_id = Subforums.id
WHERE p2.id IS NULL
И это дает мне такую таблицу:
id | thread_id | subforum_id
12 | 1 | 4
...
Я понимаю, что могу использовать комбинацию операторов MAX и GROUP BY, чтобы получить максимальное id
на subforum_id
, но похоже, что это вообще неэффективно.
Есть ли лучший способ решить эту проблему?