SQL:Opencart 范围过滤器

SQL: Opencart Range Filter

我对 opencart 中的 "Filter" 模块做了一点扩展。 不过还有个小问题。

我现在的SQL:

SELECT product.product_id FROM `oc_product` product
LEFT JOIN `oc_product_attribute` attribute ON product.product_id = attribute.product_id
WHERE 
((attribute.attribute_id = 13 (weight) AND `text` BETWEEN 1 AND 2) 
OR (attribute.attribute_id = 12 (length) AND `text` BETWEEN 10 AND 12));

但是这个 returns 介于 1 和 2(重量)之间以及介于 10 和 12(长度)之间的东西。因此,例如,重量为 2 公斤的东西得到 returned,而长度为 11cm 的东西得到 returned。

我想要它 return 例如,重 2 公斤,长 11 厘米。

我试过在条件之间放置 AND,但它没有 return 任何东西。

谢谢

使用聚合和 having 子句得到满足两个条件的 product_ids:

select p.product_id 
from oc_product p
left join oc_product_attribute a on p.product_id = a.product_id
group by p.product_id
having sum(a.attribute_id = 13 and text between 1 and 2) > 0
   and sum(a.attribute_id = 12 and text between 10 and 12) > 0;