我可以使用什么Sql Join来组合我的三个表



我做了一个查询,用户可以看到活动用户的所有帖子,但不能看到非活动用户的帖子,但他们也不应该看到他们屏蔽或屏蔽的用户的帖子。我该怎么做?,blockusers表有blockbyuserid和blockeduserid列。

我尝试了INNER JOIN post table with members table,每个非活动用户发布的帖子都看不到了。,如何组合block_users表?

$GetPost = "SELECT Post.* FROM Post 
INNER JOIN Members ON Post.Poster_user_id = Members.User_id 
WHERE Status='active'";

您可以尝试FULL OUTER JOIN这个想法是获取表member和block_users中的所有项,然后使用where子句过滤数据,如果我没有使用字段名称,我很抱歉,所以请检查表名称,我假设block_uusers.block_by_userid包含被阻止的用户id,如果没有使用正确的字段

$GetPost = "SELECT Post.* FROM Post 
INNER JOIN Members ON Post.Poster_user_id = Members.User_id 
FULL OUTER JOIN block_users ON  Members.User_id  = block_users.user_id
WHERE Status='active' 
AND
WHERE block_users.block_by_userid != Members.User_id";

假设我为user_id为123的用户xyz执行此操作,那么下面是一个查询,它将返回用户123的预期输出。

查询:

SELECT Post.* FROM Post 
INNER JOIN Members ON Post.Poster_user_id = Members.User_id 
WHERE Status='active' and post.poster_user_id NOT IN(select block_by_userid from block_users where blocked_user_id = 123 UNION select blocked_user_id from block_users where block_by_userid = 123)

最新更新