我正在尝试获取包含URL
中的两个过滤器的产品例如我有:www.example.com/product-name?filters=181,156
我需要从数据库中选择具有这两个值的产品。
过滤器表格分为3列
感谢
LE: 过滤器表看起来像:
id | product_id |值
1 | 841 | 181个
2 | 841 | 156个
我需要的是SELECT product_id FROM过滤器WHERE值= 181 AND值= 156
我尝试使用IN但不是我需要的,正在制作OR而不是
答案 0 :(得分:1)
尝试以下示例(演示 - > http://www.sqlfiddle.com/#!2/1de9c9/8)
第一个是使用EXISTS运算符
SELECT distinct product_id
FROM filters f
WHERE
EXISTS (
SELECT id FROM filters f1
WHERE f.product_id = f1.product_id
AND f1.`values` = 181
)
AND
EXISTS (
SELECT id FROM filters f1
WHERE f.product_id = f1.product_id
AND f1.`values` = 156
)
;
第二个使用JOIN运算符
SELECT f1.product_id
FROM filters f1
JOIN filters f2
ON f1.product_id = f2.product_id
WHERE
f1.`values` = 181
AND
f2.`values` = 156;
第三个使用GROUP BY和HAVING
SELECT product_id
FROM filters
WHERE `values` IN (181,156)
GROUP BY product_id
HAVING COUNT(*) = 2
;