-2

私は3つのテーブルを持っています。

  • tb_post:id、user、text、
  • tb_follow:id、user、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

組合を使わずにそれができるとは思いません。パフォーマンスに関しては、基本的に2つのクエリを実行しています。適切なフィールドにインデックスが付けられていることを確認してください。問題はありません。

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 に答える