Выборка по нескольким значениям в связанных таблицах
Есть 2 таблицы. Таблица ad — товары, ad_caregory — Свойства товаров. Таблица ad_caregory связана через category_id с таблицей ad (поле id). У одного товара может быть много свойств. Задача: выбрать все товары, которые отвечают заданным свойствам. Сделал выборку по 1 свойству, а при использовании перечисления — получаю нулевой результат. Что делаю не так?
SELECT
tov.id AS id_tov,
tov.title AS title_tov,
cat.category_id AS category_cat,
cat.ad_id AS ad_cat
FROM
`ad` AS tov,
`ad_caregory` AS cat
WHERE
cat.ad_id = tov.id AND
cat.category_id = '1' AND
cat.category_id = '5'
ORDER BY
tov.`id`
Ответы (1 шт):
Автор решения: Konstantin Lagutin
→ Ссылка
Решил следующим образом:
SELECT
tov.id AS id_tov,
tov.title AS title_tov,
cat.category_id AS category_cat,
cat.ad_id AS ad_cat
FROM
ad AS tov,
ad_caregory AS cat
WHERE
cat.ad_id = tov.id AND cat.category_id IN(1,3,9)
GROUP BY
tov.id
HAVING (COUNT(*) = 3)
где, IN(1,3,9) - идентификаторы свойств, а в HAVING (COUNT(*) = 3) указываем их количество.