我有一个查询,我从数据库发帖。我有一个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语句抛到内连接的末尾。所以我想知道在当前查询中添加它的最有效方法是什么?
答案 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=?))