特定のデータが3番目のテーブルに存在しない場合にのみ、2つのテーブルからデータを取得するSELECTクエリを実行しようとしています。3つの表は次のとおりです。
ブログ
id | blog_name
注目のフィード
id | blog_id
サブスクリプション
id | member_id | blog_id
注目のフィードテーブルにリストされているもののblog_idとblog_nameを返したいのですが、ユーザー(member_id)が既にサブスクリプションテーブルで購読している注目のフィードを除外します。これが私がこれまでに持っているクエリです(member_idに3を使用しています-テーブル名は上記とは少し異なることに注意してください):
SELECT featured_feeds.blog_id, featured_feeds.category_id, blogs.blog_name FROM featured_feeds LEFT JOIN blogs ON featured_feeds.blog_id = blogs.blog_id LEFT JOIN subscriptions ON subscriptions.blog_id = featured_feeds.blog_id WHERE subscriptions.blog_id != '3' ORDER BY blogs.blog_name ASC
このクエリは、別のユーザーが同じフィードにサブスクライブしている場合に、そのユーザーがサブスクライブしている注目のフィードを除外しません。たとえば、Subscriptionsテーブルに次の行がある場合:
1 | 3 | 4
2 | 2 | 4
blog_id 4が注目のフィードにリストされている場合でも、上記の2行目のデータにより、クエリはそのblog_idを返します。グループを使用する必要がありますか?
前もって感謝します!