SQL соответствует нескольким запросам за один проход

У меня есть следующая таблица MySQL, подробно описанная ниже. Я пытаюсь выбрать любые продукты, которые отображаются в нескольких заданных идентификаторах фильтра.

e.g.

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

Я бы хотел, чтобы это возвращало «product_id = 2», но я понимаю, что вышеприведенное не работает, потому что SQL ищет одну строку, которая соответствует 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