我正在使用PHP和MySQL进行基础论坛。我为所有线程使用一个表。它被命名为forum_posts
。它具有以下字段:高级MySQL ORDER BY
id, creator, time, title, message, thread_reply, forum_id, locked, sticky
如果该信息是一个新的线程,然后thread_reply
被设置为0。否则,thread_reply
设置为线程这个帖子被回复的id
。在显示所有线程的页面上,我想在回复最后一个帖子时排序线索。我使用此查询:
SELECT `id`, `title`, `creator` FROM `forum_posts` WHERE `thread_reply` = 0 AND `forum_id` = 1 ORDER BY -`time`
唯一的问题是,查询由线程创建的时间只有订单,而不是时间的最后答复是给线程。如果您不明白我在说什么,请查看任何论坛的主页,并查看它是如何在最后一篇文章发布到线程时订购线程的,而不是创建线程的时间。
或使用相关的子查询。 –
我应该添加很多论坛系统,将“线程”数据与“发布”数据分开,以便使问题更容易解决。他们有一个包含它所在论坛的线程表,启动它的用户以及上次回复的时间,并且通常是最近添加的帖子的ID等。然后,实际的帖子位于完全不同的表格中。 –