Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

SQL. Я могу написать по-русски: "Выбрать товар у которого есть Только все эти фильтры". Но на SQL вообще не удается.

Сергей Орлов Знаток (342), на голосовании 3 года назад
Я получил данные: "1,2" - это фильтры
Надо выбрать товар (product_id) у которого фильтр attr_id
Одновременно 1 и 2.
То есть товар с id=3 не подойдет, тк у него только 1 и нет 2

Когда пишу что-то вроде...
SELECT `product`.* FROM `product` WHERE category_id IN (1) AND id IN
(
SELECT product_id FROM attribute_product WHERE attr_id IN (1,2)
)

... У меня выбираются все 1 и 2, не учитывая мое условие
На фотке я показал, как хотелось бы

.
.
Прошу помощи
Дополнен 3 года назад
Решил проблему через этот метод:
http://softtime.ru/forum/read.php?id_forum=3&id_theme=88061
Голосование за лучший ответ
Оракул Оракул (62092) 3 года назад
Запутанное у вас условие конечно, похоже на какое-то некорректное хотение, в нормальных бд такое редко встретишь
Вам нужно отобрать данные по условиям для нескольких строк, для этого сджойните продукты на продукты и получите по условию двух полей

select p1.* from product p1
join product p2 on p1.product_id = p2.product_id
where p1.attr_id = 1 and p2.attr_id = 2;
Похожие вопросы