Php 扩展查询语句以包括以下用户

Php 扩展查询语句以包括以下用户,php,mysql,sql,Php,Mysql,Sql,我有一个查询,我正在从数据库中获取帖子。我有一个3表连接来获取帖子、个人资料图片和用户名。下面是当前查询 SELECT Posts.*, Profiles.ProfilePhoto, Users.Name, Users.Username FROM ((Posts INNER JOIN Profiles ON Posts.UserID = Profiles.UserID) INNER JOIN Users ON Posts.UserID = Users.ID) WHERE Posts.U

我有一个查询,我正在从数据库中获取帖子。我有一个3表连接来获取帖子、个人资料图片和用户名。下面是当前查询

 SELECT Posts.*, Profiles.ProfilePhoto, Users.Name, Users.Username
 FROM ((Posts
 INNER JOIN Profiles ON Posts.UserID = Profiles.UserID)
 INNER JOIN Users ON Posts.UserID = Users.ID)
 WHERE Posts.UserID = ? 
 ORDER BY Posts.CreateDate DESC
现在,我正在从用户的帖子中获取数据(其中posts.userID=?)。但是我想扩展这个查询,以便从用户那里获得他/她关注的帖子

这需要我添加一些类似于另一个内部连接的东西,比如

INNER JOIN Follow ON Posts.UserID = Follow.Followed (WHERE Follow.Follower = ?) // ? being $userID; 

但这是行不通的,因为不能将WHERE语句抛出到内部联接的末尾。因此,我想知道将其添加到当前查询中最有效的方法是什么?

如果使用左连接而不是内部连接,它可能会起作用

您的左连接将类似于

left join follow 
on posts.userid=follow.follwed
and follow.follower=?
不过要小心,因为当您添加额外的连接时,它可能会给您额外的行(取决于您从follow获得的行数)

如果看不到图表,很难说清楚

另一种方法可能是这样的

WHERE (posts.userid=?
OR posts.userid in (select followed from follow
                    where follower=?))

专注于找到一种方法,然后找出如何使其更有效。显示目标用户ID所遵循的用户帖子的行,应该在
Profiles.ProfilePhoto,users.Name,users.Username
列中显示什么?目标用户ID的个人资料/用户/用户名或发布帖子的用户?@kc2018 exactlyPerfect!非常感谢。我总是忘了过去的事