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

时间:2018-03-20 23:18:10

标签: 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.UserID = ? 
 ORDER BY Posts.CreateDate DESC

现在我从用户的帖子中获取数据(其中posts.userID =?)。但我想扩展查询以获取他/她所关注的用户的帖子。

这需要我添加像

这样的另一个内连接
INNER JOIN Follow ON Posts.UserID = Follow.Followed (WHERE Follow.Follower = ?) // ? being $userID; 

但是这不会起作用,因为你不能将WHERE语句抛到内连接的末尾。所以我想知道在当前查询中添加它的最有效方法是什么?

1 个答案:

答案 0 :(得分:1)

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

你的左连接就像是

left join follow 
on posts.userid=follow.follwed
and follow.follower=?
但是,要小心,因为当你添加额外的连接时,它可以为你提供额外的行(取决于你从后面获得多少行)

没有看到图表,很难肯定地说

另一种方式可能就是这样吗?

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