为每个用户获取新项目

时间:2013-06-11 10:34:29

标签: php algorithm forum

我有很多对象(实体)。例如“新闻”,“博客”,“评论”; 我需要向注册用户显示“新闻”或“博客”对他来说有多新;

现在,我创建了一个多对多的关系;例如“users-news-reader”,其中包含字段:id,userId,newsId; 如果“新闻”的关系存在,则此“新闻”已经被阅读,即“新闻”计数是当前用户的新“新闻”计数

所以,在这个方法中,我有许多用于多对多关系的表。 我怎样才能让它更漂亮和正确?

1 个答案:

答案 0 :(得分:0)

这可以在SQL中完成。

表:

user_logons (username,logontime datetime)
news (newsitem,newstime datetime)
user_news (newsitem,username)

SQL

SELECT count(*),newsitem FROM news LEFT JOIN user_news ON user_news.newsitem=news.newsitem WHERE newstime > 
(SELECT logontime FROM user_logons ORDER BY logontime DESC LIMIT 1) 
AND user_news.username IS NULL

应该有效。这将仅显示自上次登录以来用户未查看的新消息。您也可以根据博客进行调整。这也将计算新文章的数量。可悲的是,没时间进行测试。试试sqlfiddle.com