SQL съвпадение на множество заявки с едно преминаване

Имам следната MySQL таблица, подробно описана по-долу. Опитвам се да избера всички продукти, които се появяват в множество дадени идентификатори на филтри.

e.g.

SELECT `product_id` FROM mytable WHERE (`filter_id`='100' AND `filter_id`='132');

Бих искал да видя това връщане 'product_id=2', но оценявам, че горното не работи, защото SQL търси един ред, който е eq 100 И 132.

Опитах да играя с UNION, но това върна само продукти, които бяха във филтър 100 ИЛИ 132. Може ли някой да ме насочи в правилната посока, моля?

Ето пример за моята таблица:

product_id    filter_id
------------------------
1             100
2             132
2             100
3             132
3             92
4             92

Може ли някой да предложи по-добро заглавие и за тази тема!


person Rikkouri    schedule 04.07.2013    source източник


Отговори (1)


изберете m1.product_id от mytable m1 вътрешно присъединяване към mytable m2 на (m1.filter_id='100' и m2.filter_id='132' и m1.product_id=m2.product_id )

person Yehuda    schedule 04.07.2013
comment
Благодаря Йехуда! Можете ли да ми дадете пример за това как бих разширил това в три съвпадащи критерия? напр. филтър=1 и филтър=2 и филтър=3? - person Rikkouri; 05.07.2013
comment
Няма проблем, можете да разширите заявката по следния начин: - изберете m1.product_id от mytable m1 вътрешно съединение (mytable m2, mytable m3) на (m1.filter_id='100' и m2.filter_id='132' и m3.filter_id = '92' и m1.product_id=m2.product_id и m1.product_id=m3.product_id) - person Yehuda; 05.07.2013