Я шукаю спосіб створення запиту, щоб зробити наступне:
Розглянемо 3 таблиці:
- продукція: Список товарів
- теги: список тегів
- tag_ties: таблиця, яка використовується для асоціації тегу до продукту
Розглянемо цю структуру для кожної таблиці:
Продукція:
- id (int, автоматичне збільшення)
- назва (варчар, назва товару)
Теги:
- id (int autoincrement)
- мітка (varchar, ярлик тегу)
Тег_тіси:
- id (int, автоматичне збільшення)
- tag_id (int, посилання на ідентифікатор тегу)
- ref_id (int, посилання на ідентифікатор продукту)
Що я хочу:
Отримайте, наприклад, усі продукти, позначені тегами id 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