2

我有一个存储关注者的表,我有另一个存储友谊的表现在我有第三个存储流数据的表。

它是一个社交网络,有很多原因,所以我不希望有一张桌子供追随者和朋友使用(意味着 Facebook 订阅/朋友)

有人可以提出一种方法,我应该如何查询流表来选择朋友和追随者的活动?

任何帮助将不胜感激,谢谢

这是简单的数据库方案,它不是真的像这样,但差不多!

好的,这里是数据库表架构,

追随者表。Row_ID User_ID Follow_User_ID

好友表 Row_ID User_ID Friend_ID

流表 Row_ID User_ID Contents_ID 时间类型

4

1 回答 1

1

您要寻找的最好是作为两个不同的结果集......或两者的结合。

Select "friend" as src, author, post from friends f inner join streams s on s.author = f.id
union
Select "follower" as src, author, post from followers f inner join streams s on s.author = f.id

这只是一些伪编码,但它应该让您了解如何进行。在不知道您的数据库架构的情况下,这是我能提供的最好的。

编辑:

这可能就是你要找的东西

select user_id, contents_id, time from (
    select user_id, contents_id, time
    from followers f inner join stream s on s.user_id = f.user_id and f.user_id = "username"
union
    select user_id, contents_id, time
    from friends f inner join stream s on s.user_id = f.user_id and f.user_id = "username"
) order by time desc

这将按时间顺序返回数据,降序。

于 2012-07-21T00:09:28.907 回答