Совпадения из нескольких запросов

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 товара присутствует везде.

Надеюсь доступно объяснил.

Жду помощи друзья.
Akina
Дата: 07.02.2013 16:39:31
vIRisium
[skipped]
везде разный WHERE как пример в 1-ом attr_value>20 во втором attr_value="Встраиваемый"
[spipped]
только те где возвращаемый ID товара присутствует везде

WHERE attr_value>20 AND attr_value='Встраиваемый' AND ... (last 18 conditions)


vIRisium
Надеюсь доступно объяснил.
Зря.
miksoft
Дата: 07.02.2013 16:40:19
vIRisium
Надеюсь доступно объяснил.
Увы, нет.
Приведите пример исходных данных и желаемого результата.
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-ного кол-ва запросов?
hallabud
Дата: 07.02.2013 17:08:16
SELECT product_id FROM Таблица
WHERE filter_id=2 AND attr_value="Желтый"
 AND product_id IN (SELECT product_id FROM Таблица
                    WHERE filter_id = 1 AND attr_value>=10)
vIRisium
Дата: 07.02.2013 18:42:30
Спасибо ты мне очень помог, а то я додуматься не мог =)