我在为此编写查询时遇到了一些麻烦。我想我有基本的逻辑,虽然我可能没有。我想要做的是根据用户正在查看的版块获取所有线程,然后根据他们上次回复的时间对这些线程进行排序。查询不返回任何错误,它只获取最近更新的线程。
这是我的查询:
$查询 = " 选择 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”附近使用正确的语法