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

时间:2018-12-21 02:06:31

标签: php mysql

我查询用户可以看到所有活动用户的帖子,但看不到那些非活动用户的帖子,但是他们不应该看到被阻止或阻止他们的用户的帖子,我该怎么做?,block_users表具有block_by_userid和blocked_userid列。

我尝试了将INNER JOIN与成员表一起发布的表,现在不再可以看到每个不活动的用户发布的表。,我将如何合并block_users表?

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

2 个答案:

答案 0 :(得分:0)

您可以尝试FULL OUTER JOIN 它的想法是获取表member和block_users中的所有项目,然后使用where子句过滤数据,很抱歉,如果我错过使用fields name,那么请检查表名,我假设block_users.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";

答案 1 :(得分:0)

假设我正在为用户xyz执行此操作,该用户的user_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)