选择查询无法正常工作-SQL

时间:2020-07-20 23:18:36

标签: sql

我正在建立一个社交网络,想要显示用户所做的帖子以及他关注谁的帖子。

当我关注某人时,该查询工作正常,它显示了用户帖子和他关注的人的帖子,但是当我不关注任何人时,该用户帖子也会消失,这也不应该做到这一点:

表格:

enter image description here

查询:

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;

2 个答案:

答案 0 :(得分:1)

我认为,这应该可以为您提供想要的东西:

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;

答案 1 :(得分:0)

目前还不清楚您的follower_id列在哪个表中。因此,我假设您的follower_id列在posts表中。如果是,则将筛选到follower_id = 50的帖子,如果不关注任何人,则该值应为null,因此您将在where子句中使用此筛选器筛选帖子。