1

我正在开发一个类似推特的应用程序。在这个应用程序中,用户将拥有其他用户作为关注者,他们可以看到关注者的帖子。我有以下表格:

在此处输入图像描述

根据设计,一个用户可以有其他用户作为关注者(有点像一元关系)。我想写一个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 的用户名。

4

5 回答 5

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
    )
于 2013-11-01T18:10:02.773 回答
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
于 2013-11-01T18:15:01.250 回答
0

子查询中的内部联接是否应该指向 F.userid 或 F.FollowerID?

于 2013-11-01T18:06:55.907 回答
0

在您的内部 INNER JOIN 中,您声明WHERE f.UserID = 1. 这似乎将您的结果限制在第一个追随者身上。

于 2013-11-01T18:10:35.363 回答
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
于 2013-11-01T18:13:10.550 回答