我有3个表Users,posts和post_approval
现在我有一个页面,所有这些帖子都将在帖子表中显示,但是如果帖子可见性设置为私有,那么查询将签入post_approval表以查看是否针对特定用户批准了帖子状态。
因此,用户ID 2的输出将是所有3个帖子,但是用户1和3只能看到ID 1和3。
这是正确的查询吗?
SELECT * FROM posts WHERE visiblity='public' UNION (SELECT posts.* FROM POSTS RIGHT JOIN post_approval ON post_approval.post=posts.post_id WHERE post_approval.status='approved' AND post_approval.user='2')
用户ID将在上述查询中动态输入
尝试此SQL语句。
SELECT * FROM Posts as p, Post_approval as pa
WHERE p.post_id = pa.post OR p.visiblity = 'public' AND user_id = 2
您从“帖子”和“帖子批准”中选择,并且仅获取与用户的帖子ID匹配的帖子。此外,您会获得所有公开可见的帖子。
SELECT
*
FROM
(
SELECT
u.user_id,
u.username,
p.post_id,
p.post_name,
p.visiblity
FROM
Users as u,
Posts as p
WHERE
p.visiblity = 'public'
union ALL
SELECT
u.user_id,
u.username,
p.post_id,
p.post_name,
p.visiblity
FROM
Post_approval as a,
Users as u,
Posts as p
WHERE
a.user_id = u.user_id and
a.post = p.post_id and
p.visiblity = 'private'
) as x
WHERE
x.user_id = 2