我在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
如何知道活动用户是否已阅读该用户的所有帖子?
答案 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)
希望这会有所帮助。