2016-07-05 11 views
0

私は、ポストのテーブルテーブルとフレンドリストのテーブルを持っています。MYSQLクエリ複数のテーブル条件付きのSQL

Posts: 
id | PosterUsername | title | info1 | info2 | etc. 

Friends: 
user | friend | blocked(boolean) 

だから基本的に私は、アクティブなユーザーが友だちとして追加している誰かによって投稿された記事のみを表示できるように、私は結果をフィルタリングすることができ、SQLクエリを探しています。私は基本的に表示して、変数内の友人として、その後、Iループとして「activeUser」を追加したユーザーのリスト全体を保存する方法を考えることができ

SELECT * FROM Posts WHERE 
FROM Friends user = PosterUsername AND friend = 'activeUsername' AND BLOCKED = '0' 

...のような

何か私はちょうどそれをチェックし、条件を満たすものだけを表示することができる投稿。しかし、私は高度なMYSQLコマンドにはあまり慣れていません、私はそこに良い方法があると推測しています。

更新:

enter image description here

+0

質問:友人関係の双方向ていますか?私がこれを意味するのは、「Friends」テーブルのエントリは、両方の友達が関係にあることを意味するのか、それとも一方的な関係を意味するのでしょうか? –

+0

これを試してみてください: 'SELECTION * FROM POST INNER JOIN Friends ON(Posts.id = Friends.friend)WHERE user = '現在のユーザー' ANDブロック= 0;' –

+0

@TimBiegeleisenこれは一方向の関係になります。それは両方とも可能かもしれませんが、目的はポスターの友人にのみ投稿を表示することです。 –

答えて

-4

実際のコードを記述せずに、私は自分の携帯電話によ以来、あなたがしたいと思う:そのようなことは、トリックを行う必要があり

Select * 
from posts 
where posterid in (
    select friendid 
    from friends 
    where userid =loggedinuserid) 

+2

これまでに何があったのか一貫した答えを書くことができない場合は、 –

+0

ダゴンは、そのメッセージについて正確に矛盾しているものは何ですか? – Jeff

2

1つのオプションは、ここで友人たちによって書かれた記事で、ユーザーの友人を接続し、一緒にFriendsPostsテーブルを結合するために、次のようになります。

SELECT p.* 
FROM Friends f INNER JOIN Posts p 
    ON f.friend = p.PosterUsername 
WHERE f.user = 'current user' AND f.blocked = FALSE 
+0

私はこの方法を研究し、それがうまくいくかどうかをお知らせします、ありがとう! –

+0

サンプルデータを追加すると、必要な正確なクエリを決定するのに役立ちます。 –

関連する問題