我正在开发类似app的应用程序。在此应用中,用户将有其他用户作为关注者,他们可以看到关注者帖子。我有以下表格:
根据设计,用户可以拥有其他用户作为关注者(有点像一元关系)。我想写一个sql语句来检索所有关注者帖子+我的帖子(用户名,poststatus)。
我尝试了不同的sql语句,但没有返回我需要的正确数据。例如:
SELECT f.FirstName, f.LastName, up.PostStatus FROM UserPosts up
Inner join (
SELECT f.UserID,f.FollowerID, u.FirstName, u.LastName
from Followers f INNER JOIN Users u on f.UserID = u.UserID
WHERE f.UserID = 1) as f
ON up.UserID = f.FollowerID
OR up.UserID=f.UserID
此查询会返回所有关注者帖子,但不会返回正确的关注者用户名,而是返回用户1的用户名。
答案 0 :(得分:1)
select u.FirstName, u.LastName, up.PostStatus
from UserPosts as up
inner join Users as u on u.UserID = up.UserID
where
up.UserID = @UserID or
exists (
select *
from Followers as f
where f.FollowerID = up.UserID and f.UserID = @UserID
)
答案 1 :(得分:1)
以下内容为您提供 a)用户1帖子 b)来自用户1的任何人的帖子。
SELECT p.*
FROM posts p
WHERE userID = 1
UNION ALL
SELECT pf.*
FROM posts pf
JOIN followers f
ON pf.userID = f.followerID
WHERE f.userID = 1
答案 2 :(得分:0)
您的子查询中的内部联接是否应指向F.userid或F.FollowerID?
答案 3 :(得分:0)
在你内心的INNER JOIN中,你陈述WHERE f.UserID = 1
。这似乎将您的结果限制在第一个追随者身上。
答案 4 :(得分:0)
我想是这样的
SELECT p.postStatus, p.firstname, p.lastname FROM Post p
INNER JOIN Follows f ON f.followerID=p.UserID AND f.UserID={user id you are selecting}
INNER JOIN Users u ON f.followeID=u.UserID