У меня возникают проблемы при выборе объектов типа Product, в которых продукт имеет две или более категорий.
У меня есть следующие таблицы:
product
============
product_id (PK)
name
category
============
category_id (PK)
name
и их ассоциация:
product_category
============
product_id (PFK)
category_id (PFK)
Теперь проблема в том, что я не могу выбрать продукт по нескольким категориям category.category_id с использованием таблицы product_category.
Например: я хочу выбрать все продукты, которые относятся к категории 1, 2, это означает, что в таблице product_category есть два вхождения.
Для выбора всех товаров в одной категории может быть использован следующий выбор
SELECT p.*
FROM product p
JOIN product_category pc using(product_id)
WHERE category_id = 1;
Но как я могу выбрать, где продукт имеет category_id 1 и 2? Запрос должен возвращать только продукты, с которыми связаны обе категории.
WHERE category_id = 1 and category_id = 2;
Это очевидно невозможное совпадение, но как я могу обойти это? Это вообще возможно?