复杂的Mysql查询结合3个表数据?

时间:2012-07-21 00:05:10

标签: php mysql

我有一张桌子,我存放了粉丝,我有另一张桌子,我存放着友谊 现在我有第三个存储流数据的表。

它是一个社交网络,有很多原因所以我不希望有一个关注者表和一个表。友谊(意味着facebook订阅/朋友)

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

非常感谢任何帮助,谢谢

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

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

粉丝表。 ROW_ID 用户身份 Following_User_ID

朋友表 ROW_ID 用户身份 Friend_ID

流表 ROW_ID 用户身份 Contents_ID 时间 型

1 个答案:

答案 0 :(得分: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

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