Я ищу способ создать запрос, чтобы сделать следующее:
Давайте рассмотрим 3 таблицы:
- продукты: Список продуктов
- теги: список тегов
- tag_ties: таблица, используемая для привязки тега к товару
Давайте рассмотрим эту структуру для каждой таблицы:
Товары:
- id (int, автоинкремент)
- название (varchar, название продукта)
Метки:
- id (int autoincrement)
- ярлык (varchar, ярлык ярлыка)
Tag_ties:
- id (int, автоинкремент)
- tag_id (int, ссылка на идентификатор тега)
- ref_id (int, ссылка на идентификатор продукта)
Что я хочу:
Получите все продукты, которые помечены тегами с идентификаторами 10, 11 и 12, например.
Этот запрос не работает, так как он возвращает товары, имеющие хотя бы один из тегов:
select
p.name as name,
p.id as id
from
products p inner join tag_ties ties
on
p.id=ties.ref_id
where
ties.ref_id=p.id and
ties.tag_id in (10,11,12)
group by
p.id
order by
p.name asc