如何使用mysql制作未读主题列表

时间:2009-08-02 12:06:36

标签: php mysql

在论坛中显示包含未读帖子的列表的有效方法是什么? 可以跟踪用户并记录他或她访问的每个帖子并将其注册到新表中。

我认为这不是很有效率。什么是更有效的方法呢?

1 个答案:

答案 0 :(得分:2)

如果你真的想这样做,你可以有一个表格

UserVisit: user_id, topic_id, last_visited_at

每当用户打开主题时您更新哪个表。 然后,您可以选择此表中不包含id的主题,或者在last_visited_at之后添加帖子的主题。类似的东西:

SELECT *
FROM Topic
WHERE Topic.id NOT IN (SELECT topic_id FROM UserVisit WHERE user_id = $user_id)

UNION

SELECT *
FROM Topic
LEFT JOIN UserVisit ON Topic.id = UserVisit.topic_id
WHERE user_id = $user_id
AND UserVisit.last_visited_at < Topic.last_post_at

但我建议不要这样做,而是向用户展示自用户上次访问网站以来有新帖子的主题。如果您这样做,根本不需要此表,您可以将主题查询为:

SELECT *
FROM Topic
WHERE Topic.last_post_at > $users_last_visit