【发布时间】:2015-09-17 19:53:12
【问题描述】:
我创建了一个小型社交网站,其中包含三个简单的表格,如下所示。
Table User
id (pk) | user_name
1 | a
2 | b
3 | c
Table Post
id (pk) | user_id (fk)
1 | 1
2 | 3
3 | 2
4 | 2
Table Block
id (pk) | block_by (fk) | blocked_to (fk)
1 | 1 | 2
用户可以阻止他们想要的任何人,如果发生阻止,两个用户将不再在他们的新提要上看到彼此的帖子。
从我的表格来看,这意味着 user1 和 user2 不会看到彼此的帖子,但 'user3' 通常会看到每个人的帖子,因为他不属于表格块。
select * from Post p
where p.user_id not in
(select b.blocked_to from Block b
where b.block_by = '$_SESSION[userid]')
从 SQL 查询 user1 看不到 user2 的帖子,但 user2 仍然看到 user1 的帖子,这是我不想要的。对于这种情况,我能做的最好的查询是什么? 还请考虑我的数据库设计是这样的好方法吗?你可以建议我,非常感谢:)
【问题讨论】: