我可以使用什么sql连接来组合我的三个表

nhaq1z21  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(291)

我做了一个查询,用户可以看到所有活跃用户的帖子,但不能看到那些不活跃用户的帖子,但是他们不应该看到他们阻止的用户的帖子,或者阻止他们怎么做?block\u users表有block\u by\u userid和blocked\u userid列。
我尝试将post表与members表内部连接起来,这样就无法再看到所有非活动用户的post了。我将如何组合block\u users表?

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

cvxl0en21#

假设我是为一个用户xyz这样做的,其用户id是123,那么下面是一个查询,它将返回用户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)
vlju58qv

vlju58qv2#

您可以尝试完全外部连接的想法,它获取表成员和块用户中的所有项,然后使用where子句筛选数据,很抱歉,如果我没有使用字段名称,请检查表名称,我假设块用户。块用户id包含块用户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";

相关问题