Запрос многие ко многим. Поиск по нескольким параметрам
Уверен, что такой вопрос уже задавался, но я не смог найти подходящий для меня ответ. Заранее прошу прощения за возможный дубль.
Есть таблицы:
- works (id, name)
- categories (id, name)
- work_categories(id, work_id, category_id)
Нужно составить запрос для получения works которые состоят в категориях к примеру с id 1 И 2.
у меня получился такой вариант но я не уверен что он оптимальный:
SELECT w.*
FROM works AS w
JOIN work_categories wc ON wc.work_id = w.id
JOIN work_categories wc2 ON wc2.work_id = w.id
JOIN categories c ON c.id = wc.category_id
JOIN categories c2 ON c2.id = wc2.category_id
WHERE c.id = 1 AND c2.id = 2
GROUP BY w.id