Поиск товаров с несколькими категориями - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть таблицы "Продукты", "Категории" и Таблица отношений для ForeignKeys "ProductsToCategories" в классическом способе нормализации.

В моем приложении вы можете выбрать категорию с выпадающим списком, но я хочу переключиться на RadioButton, где пользователь может выбрать более одной категории.

Как я могу реализовать Запрос, чтобы найти только продукты, в которых несколько сущностей совпадают в Таблице отношений?

Псевдокод: выберите * из Внутренних продуктов ProductsToCategories ... где ID категории = 35 И ИД категории = 36 И ИД категории = 9

1 Ответ

2 голосов
/ 12 апреля 2019

Одна простая опция использует агрегацию:

SELECT
    p.id,
    p.name
FROM Products p
INNER JOIN ProductsToCategories pc
    ON p.id = pc.product_id
WHERE
    pc.category_id IN (9, 35, 36)
GROUP BY
    p.id,
    p.name
HAVING
    COUNT(DISTINCT pc.category_id) = 3;

Основная идея здесь - агрегировать по каждому продукту, сначала удаляя все записи, кроме тех, которые относятся к трем категориям, представляющим интерес. Затем мы утверждаем, что то, что осталось, - это три отдельные категории, подразумевая, что продукт соответствует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...