Я храню некоторые данные в MySQL и хочу отфильтровывать строки, соответствующие заданным критериям.Применить фильтр к объединенным таблицам с MySQL
Звучит просто, но это не так, поскольку есть некоторые критерии присоединения.
У меня есть следующие таблицы:
items : id, ...
genres: id, name:varchar, item_id
Каждый элемент имеет несколько жанров.
Запрос должен фильтровать из элементов, если хотя бы один жанр соответствует указанному имени жанра (или набору имен).
Например:
Item with id 1 has 3 genres
- genre name = 'foo'
- genre name = 'bar'
- genre name = 'baz'
Пункт 1 не может быть частью результата, если данное имя жанр «бар», [ «бар», «Баз», «хуг»] и т.д.
Я попытался уйти в жанры по предметам и применил инструкцию WHERE с помощью «genres.name NOT IN (?)». ? это заданный набор жанровых имен.
Это (конечно) работает только для предметов с одним жанром. То же самое можно было бы достичь за счет нескольких условий WHERE: WHERE name <> 'a' И имя <> 'b' ...
Любые идеи о том, как правильно выполнить этот запрос?
Заранее благодарен!
Не могли бы вы дать пример запроса, объяснить, что он делает, а затем объяснить, что вы хотите, чтобы он поступил иначе? –
Я еще не понимаю таблицы ... поэтому у вас есть таблица 'items' и таблица' genres'. Почему в последней таблице есть столбец 'item_id'? Я ожидал увидеть таблицу ассоциаций «многие-ко-многим», которая связывает элементы с жанрами. –
Почему вы хотите отфильтровать элементы, если по крайней мере один жанр соответствует определенному жанру? Где, как в первой строке вашей проблемы, вы написали противоположное. –