获取具有隐私设置的mysql行

时间:2014-01-21 14:59:02

标签: mysql

我有一个posts表,其中包含用户帖子,如下所示:

id    userid    post    privacy
1     2        xyz1     1
2     2        xyz2     2
3     3        xyz3     2
...

其中,userid是海报的ID,privacy是特定帖子的隐私设置。 privacy 1表示它是公开发布的帖子,而privacy 2表示它仅供朋友使用。

我有另一个表供用户跟随另一个用户:follows

id    userid    followid    friends
1     1         2           1
2     1         3           0
3     2         4           1
...

userid是用户的ID,followiduserid所关注的用户的ID。如果这两个用户也是朋友,则friends为1,如果不是,则为0。

不考虑隐私设置,将这两个表组合起来看起来很简单: SELECT * FROM posts, follows WHERE (follows.userid = 1 AND follows.followid = posts.userid )

但是,我很难纳入隐私因素。基本上我想要做的是:如果privacy = 1,它并不重要,因为它是一个公共帖子。但是,如果privacy = 2仅在friends = 1

时获取行

1 个答案:

答案 0 :(得分:0)

我玩过,可能已经解决了问题

SELECT *
 FROM posts p
 LEFT JOIN follows f ON (p.user_id = f.followid)
 WHERE (f.user_id = 1 AND (p.privacy = 1 OR (p.privacy = 2 AND f.friends = 1))) 
 ORDER BY p.id

如果这是正确的,请告诉我。