2017-12-16 7 views
0

現在、私はソーシャルネットワークに取り組んでいます。私はTWのようなユーザーをフォローするのではなく、FBのような友達関係を作ることにしました。SQLクエリの問題(3つのテーブルを使用)

私は3つのテーブル(ユーザー、投稿、友達)を持っています。

Friends Table

Post Table

Users Table

私はそれをしたいと思っ

ように、ユーザは何の友人を持っていない場合(または単に[友人テーブルにfriends_type == 1]招待状を送りました)、彼の投稿だけが表示されます。

私の考えはSELECT * FROM users, posts, friends WHERE friends_status=4ですが、ユーザーが友だちを持っているときは、彼と彼の友達からの投稿を見たいと思います。

もちろん、これは私が作ったSQLクエリです:SELECT * FROM posts, users, friends WHERE user_id=post_author AND friends_status=4 AND (friend_friendid=user_id OR friend_userid=user_id) ORDER BY post_id DESCです。

基本的に、私はFacebookがホームページ(スクロールしてスクロールすることができる終わりのないタイムライン)上にあるものを達成したいと思います。私の質問は:どのようにそのクエリを構築するのですか?

+1

あなたはplsは明確でしたですか? –

+0

最初に:問題が何であるか、エラーが発生したか、何かについての情報を提供しますか? 2番目:それはあなたのSQLクエリは、投稿したものよりも別のテーブル構造を想定しているようですが、画像にposts_useridフィールドが見つかりません。フィールドpost_authorがあります – knetsi

+0

http://stackoverflow.com/help/how-to-ask –

答えて

0

これは、1つの方法で、友人を見つけるためにサブリクエストを使用している:、あなたの質問は何

select * 
from posts 
where post_author = {user_id} 
    or post_author in 
    (
    select friend_friendid from friends 
    where friend_userid = {user_id} 
     and friend_status != 1 
    )