1

ユーザーは私の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   |
--------------------------------------
4

1 に答える 1

1

WHEREステートメントで、関係テーブルのいずれかの列に一致するように、次のようにします。はOR両方を取得します。

WHERE   b.user_1 = $user_id OR b.user_2 = $user_id 

幸運を!

于 2012-08-12T19:57:13.307 に答える