2016-07-30 5 views
1

からIDに、私は1つのIDに3つのテーブルを結合する概念を把握に苦労しているように見えるWHEREで検索登録しよう。MySQLは3つのテーブルが1

USER表
|id | |:----:| |1 | |2 |

POSTテーブル
|id |userid | content| |:----:|:----:|:----:| |1 |1 |HELLO | |2 |1 |THERE | |3 |2 |WORLD |

友人表Iは、USERテーブルからIDを提供し、POSTSどこからすべてのコンテンツを取得したい
|id | userid | friendid | |:----:|:------:|:--------:| | 1 | 1 | 2 |

POST.USERIDはFRIEND.USERIDとFRIEND.FRIENDIDです したがって、USER.ID = '1'はbriになりますすべてのPOST.CONTENT(この場合)を戻します。

は本当にあなたが時間のために私に迷惑して、役立つことを願って。

+0

を、あなたは一例を示したことはできますか?期待される結果は何ですか? – 1000111

+0

私はUSER.IDに '1'をつけてPOSTからすべてのコンテンツを取得します。 USER.IDはFRIEND.USERIDと結合し、FRIEND.USERIDとFRIEND.FRIENDIDはPOST.USERIDと一致します。 – Chris

+0

「フレンド」テーブルって何を意味しましたか?友人のテーブルから何かがありますか? – 1000111

答えて

0

あなたの説明に続いて、あなたがそこにユーザーIDを持っているとして、あなたが直接、友人のテーブルを使用することができ、ユーザテーブルに参加する必要はありません。しかし、これはあなたにuserid 5と彼のその人の友達からのすべての投稿を与えるはずです。重複を照会しないように

SELECT post.* 
FROM post 
INNER JOIN friends ON post.userid = friends.userid OR post.userid = friends.friendid 
WHERE friends.userid =1 

は、この使用:

SELECT post.*, users.firstname 
FROM post 
INNER JOIN users ON users.userid = post.userid 
WHERE post.userid = 1 

UNION 

SELECT post.*, users.firstname 
FROM friends 
INNER JOIN post ON friends.friendid = post.userid 
INNER JOIN users ON users.userid = friends.friendid 
WHERE friends.userid = 1 
+0

これは、私が質問を忘れてしまったに違いない。あなたが投稿最初の1 .. 「SELECTポスト、除き 。 *ポストから INNERがpost.useridで友だちを登録しよう= friends.userid OR post.userid = friends.friendid WHERE friends.userid = 1' が完璧に動作するようです。 他方、編集されたものは、同じ結果をもたらさない。 ありがとうございます! – Chris

+0

私はつもり再び – Philipp

+0

さてさて、それをチェックし、最初のものは間違っていたと思うが、再び最初のクエリを追加し、そしてありがとう – Philipp

関連する問題