我有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的结果
请帮助:)
我有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的结果
请帮助:)
对于跨产品的给定行只有一个过滤器_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
我认为OP希望其中一个产品具有过滤器(1,3)或(2,3) –