ユーザーは私のWebサイトで2種類の関係を持つことができます。フォロー中または友達。各ユーザーのニュースフィードに、関係のあるユーザーからの投稿を入力したいと思います。これまでのところ、私はこの参加をしています:
SELECT *
FROM posts a
LEFT JOIN relationships b
ON a.user_id = b.user_2
WHERE b.user_1 = $user_id AND
b.status IN (1,3,4) OR a.user_id = $user_id
ORDER BY a.post_id DESC
b.statusは、2人のユーザー間の関係のステータスを決定する関係テーブルの列です。1人がフォロー中、3人が友達、4人が保留中の友達リクエストでフォローしています。私の参加はうまく機能しますが、「関係」テーブルに2人の間の友情を表すことができる行が1つしかないことは考慮されていません。次の2つの行があります。最初は、ユーザー2(マット)に続くユーザー1(マーク)とユーザー1(マーク)に続くユーザー2(マット)です。しかし、友情の場合、それはステータス3の、いずれかの方法を示す行のいずれかです。まず、それは賢明な実践ですか?または、このタイプのpf関係にも2つの行が必要ですか?第二に、JOIN QUERYで、user_1とuser_2の間に関係があり、ステータスが3のユーザーからの投稿も取得するにはどうすればよいですか?user_1とuser_2の順序に関係なく?
テーブル構造:
Posts:
| user_id | post_id | story |
-----------------------------
| 1 | 1 | text. |
-----------------------------
Relationships:
| rel_id | user_1 | user_2| status |
--------------------------------------
| 1 | 1 | 2 | 3 |
--------------------------------------