-2

我有 3 张桌子。

  • tb_post:id、用户、文本和
  • tb_follow:id、用户、followed_user 和
  • tb_share: id, fk_post_id, user(分享帖子的人)

所以 user01 想要检索 user01 之后的用户的所有帖子 + user01 关注的用户共享的所有帖子

编辑:我怎么能得到那个?我试过这个查询:

select * from post 
left join follow on post_user = follow_user 
left join share on follow_user = share_user 

但我只得到了第一部分。

4

1 回答 1

1

我不相信你可以在不使用工会的情况下做到这一点。性能方面,您基本上是在运行两个查询。一定要索引适当的字段,你应该没问题。

SELECT tb_post.id, tb_post.text
FROM tb_post INNER JOIN tb_follow ON tb_post.user = tb_follow.followed_user
WHERE (((tb_follow.user)=100))
ORDER BY tb_post.id
UNION SELECT tb_post.id, tb_post.text
FROM (tb_share INNER JOIN tb_follow ON tb_share.user = tb_follow.followed_user) INNER JOIN tb_post ON tb_share.fk_post_id = tb_post.id
WHERE (((tb_follow.user)=100))
ORDER BY tb_post.id;
于 2012-06-14T21:50:29.623 回答