我在为此编写查询时遇到了一些麻烦。我想我有基本的逻辑,虽然我可能没有。我想要做的是根据用户正在查看的版块获取所有线程,然后根据他们上次回复的时间对这些线程进行排序。查询不返回任何错误,它只获取最近更新的线程。
这是我的查询:
$查询 = "
选择
t.child_id, t.thread_id,
m.thread_id、m.message_id、m.date_posted
FROM forum_threads AS t
LEFT JOIN forum_messages AS m ON t.thread_id = m.thread_id
WHERE t.child_id = ".$board_id."
按 m.date_posted DESC 排序
限制 ".$starting.", ".$this->user['results_per_page'];
这是正在返回的查询:
选择 t.child_id、t.thread_id、m.thread_id、m.message_id、m.date_posted
FROM forum_threads AS t
左加入 forum_messages AS m
ON t.thread_id = m.thread_id
哪里 t.child_id = 2
ORDER BY m.date_posted DESC LIMIT 0, 15


更新
我试图采用 ethrbunny 提出的想法,尽管我完全不知道导致它返回错误的原因。
$查询 = "
选择
t.board_id, t.thread_id
FROM forum_threads AS t
左连接(
选择 m.thread_id,m.message_id
FROM forum_messages AS m
哪里 m.thread_id = t.thread_id
按 m.message_id DESC 排序
限制 1
) 作为 q
WHERE t.board_id = ".$board_id."
ORDER BY q.date_posted DESC
限制 ".$starting.", ".$this->user['results_per_page'];
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 11 行的“WHERE t.board_id = 4 ORDER BY q.date_posted DESC LIMIT”附近使用正确的语法