一部の投稿を除外する SQL クエリ (私は postgres を実行しています) を作成しようとしています。
たとえば、ユーザー モデル (id、名前など...)、ブラックリスト モデル (id、user_id、blacklisted_user_id を含む)、投稿モデル (id、author_id、タイトルなど) を見つけたとしましょう。
ユーザー A(id=5) がユーザー B(id=10) をブロックするとします。
ユーザー A も B も自分の投稿を見るべきではありません。私はsthに見えるクエリを試しています。このような:
SELECT posts.* FROM "posts"
LEFT JOIN blacklists b ON (b.user_id = posts.author_id OR
b.blacklisted_user_id = posts.author_id)
WHERE (b.user_id = 5 AND b.blacklisted_user_id = posts.author_id) OR
(b.user_id = posts.author_id AND b.blacklisted_user_id = 5)
ただし、結果は必要なものとは正反対です。ブラックリストに登録されたユーザーからの投稿のみを取得しています。
を使用するb.user_id != 5
と、空の応答が返されます。