过滤多对多关系

时间:2013-07-18 08:33:07

标签: mysql sql

我有3个表产品,过滤器,product_filter - 多对多关系 我正在尝试过滤这样的产品:

SELECT p.* FROM product p
INNER JOIN product_filter pf ON pf.product_id = p.id
WHERE (pf.filter_id = 1 OR pf.filter_id = 2) AND pf.filter_id = 3

问题是有些产品包含所有过滤器(1,2,3),但我得到0结果

请帮助:)

1 个答案:

答案 0 :(得分:3)

对于叉积中的给定行,只有一个filter_id。 product_filter中的同一行中没有1和3。

要获得该效果,请尝试沿这些行进行双连接: -

SELECT p.* FROM product p
INNER JOIN product_filter pf1 ON pf1.product_id = p.id
INNER JOIN product_filter pf2 ON pf2.product_id = p.id
WHERE (pf1.filter_id = 1 OR pf1.filter_id = 2) AND pf2.filter_id = 3