将分组的帖子标记为已读或未读mysql

时间:2018-12-12 12:23:35

标签: mysql

我在php中有一个系统,用户可以单击图像创建帖子,而其他用户可以通过单击指导者的姓名来查看这些分组的帖子。

当user1发布新内容时,user2会将其视为新内容(用户1的名称将带有下划线,表明其中包含未看到的帖子)。那就是我的问题,要知道user2是否看到了user1的所有帖子。

select c.user, count(v.id)

from posts s 

join cadastro c on s.user=c.id 
left join posts_view v ON v.posts_id = s.id

group by s.user
order by s.id desc limit 20

我尝试使用此计数v.id来检查user2是否看到过帖子,但是user1可能创建了很多帖子,我需要知道user2是否看到了所有帖子。任何想法如何做到这一点?

我的桌子:

帖子:

 `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `user` int(11) UNSIGNED NOT NULL,
  `foto` varchar(400),
  `data` datetime NOT NULL,
  `ip` varchar(20),

posts_view

 `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `posts_id` int(11) UNSIGNED NOT NULL, //foreign key to posts id
  `user` int(11) UNSIGNED NOT NULL, //the user who saw the post

如何知道活动用户是否已阅读该用户的所有帖子?

1 个答案:

答案 0 :(得分:1)

 SELECT distinct(P.user) 
 FROM posts_view PV
 JOIN posts P ON P.id = PV.posts_id
 WHERE NOT EXISTS (SELECT * 
                   FROM posts_view 
                   WHERE posts_view.user = userID 
                   AND posts_view.posts_id = P.id)

希望这会有所帮助。