一部のデータを MySQL に保存しており、特定の条件に一致する行を除外したいと考えています。
簡単に聞こえますが、結合基準がいくつか含まれているため、そうではありません。
次のテーブルがあります。
items : id, ...
genres: id, name:varchar, item_id
各アイテムには複数のジャンルがあります。
少なくとも 1 つのジャンルが特定のジャンル名 (または一連の名前) と一致する場合、クエリはアイテムを除外する必要があります。
例えば:
Item with id 1 has 3 genres
- genre name = 'foo'
- genre name = 'bar'
- genre name = 'baz'
指定されたジャンル名が 'bar'、['bar'、'baz'、'xyz'] などの場合、項目 1 は結果セットの一部ではない可能性があります。
アイテムのジャンルを結合したままにし、「genres.name NOT IN (?)」を使用して WHERE ステートメントを適用しようとしました。? 与えられたジャンル名のセットです。
これは (もちろん) 1 つのジャンルのアイテムに対してのみ機能します。複数の WHERE 条件でも同じことが実現できます: WHERE name <> 'a' AND name <> 'b' ...
このクエリを適切に実行する方法はありますか?
前もって感謝します!