sql”

yftpprvb  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(400)

我正在建立一个社交网络,并希望显示用户所做的帖子和他所关注的人的帖子。
当我跟踪某人时,查询工作正常,它显示用户帖子和他跟踪的人的帖子,但是当我不跟踪任何人时,用户帖子也会消失,如果不应该这样做:
表格:

查询:

SELECT DISTINCT posts.id, posts.body, posts.posted_at, posts.postimg, posts.likes, users.username
FROM users, posts, followers
WHERE (posts.user_id = followers.user_id OR posts.user_id = 50)
AND users.id = posts.user_id AND follower_id = 50
ORDER BY posts.posted_at DESC;
r3i60tvu

r3i60tvu1#

我想,这会给你想要的:

SELECT DISTINCT posts.id, posts.body, posts.posted_at, posts.postimg, posts.likes, users.username
FROM posts
LEFT JOIN users ON posts.user_id = users.id
LEFT JOIN followers ON posts.user_id = followers.user_id
WHERE posts.user_id = 50
ORDER BY posts.posted_at DESC;
uqxowvwt

uqxowvwt2#

有点不清楚您的follower\u id列在哪个表中。。。所以我假设您的follower\ id列在posts表中。如果是,则向下过滤到follower_id=50的帖子,如果没有跟踪任何人,则该值应为null,因此在where子句中使用此过滤器过滤帖子。

相关问题