vIRisium
Дата: 07.02.2013 16:32:58
Доброго времени суток!
Допустим есть 20 запросов к одной таблице состоящий всего из 4х столбцов.
ID строки(attr_id), Указатель на ID фильтра(filter_id), ID товара, Значение для данного фильтра(attr_value).
Допустим что в этих 20ти запросах везде разный WHERE как пример в 1-ом attr_value>20 во втором attr_value="Встраиваемый"
Можно ли на уровне MySQL сделать так чтобы среди всех 20ти запросов которые происходят выводились только те где возвращаемый ID товара присутствует везде.
Надеюсь доступно объяснил.
Жду помощи друзья.
vIRisium
Дата: 07.02.2013 16:50:49
ОК допустим
Таблица
attr_id | filter_id | product_id | attr_value
101 | 1| 1003 | 10 - параметр вес
102 | 2| 1003 | Желтый - параметр цвет
103 | 9| 1004 | 1400 - параметр объем
104 | 7| 1011 | Розовый - параметр цвет
104 | 2| 1004 | Желтый - параметр цвет
У меня пользователь сказал хочу найти продукты где вес >= 10 (filter_id = 1 AND attr_value>=10) и цвет желтый(filter_id=2 AND attr_value="Желтый").
По логике вышло что нужно сделать 2 запроса к таблице
SELECT product_id WHERE filter_id = 1 AND attr_value>=10; (Результат: 1003)
и
SELECT product_id WHERE filter_id=2 AND attr_value="Желтый"; (Результат: 1003, 1004)
Следовательно пересечение результатов - это 1003 т.к. он имеется и там и там.
Так вот как мне получить пересечение результатов N-ного кол-ва запросов?