1

私がフォローしているユーザーと友達のユーザーからのすべての投稿を選択する結合があります

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)

このクエリで、a.user_id = $user_id (私の ID) のすべての投稿も選択するにはどうすればよいですか? 基本的に、私からの投稿もすべて選択しますか? データを複製することなく。

4

2 に答える 2

0

これをテストする方法はありませんが、以下は期待どおりに機能すると思います。

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)
于 2012-08-12T05:18:54.270 に答える
0

基本的に 1 つのテーブルで 2 つのクエリの結果が必要な場合は、ユニオン クエリを使用します。2番目のクエリのWHERE句を正しく修正する必要がありますが、次のようなものはどうでしょうか

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)
UNION DISTINCT
SELECT *
FROM    posts a
WHERE   a.user_id = $user_id (my id)

また、左結合の使用についても質問します-INNER JOINの方が良いと思います

于 2012-08-12T05:56:55.130 に答える