具有3个表的复杂选择



我正在开发电子商务应用程序,我很难选择将其用作过滤器的产品属性。

共有3个表格:

产品

1<1>
id 名称 活动
1 气球XL红色
2 气球L红色 1
3 气球XL绿色 1
4 气球S绿色
5 气球XL黑色 1

您可以使用子查询:

SELECT DISTINCT pv.value FROM propertyvalue pv
INNER JOIN product p ON p.id = pv.product
WHERE pv.property = 2 AND p.id IN (
SELECT product.id FROM product
INNER JOIN propertyvalue
ON product.id = propertyvalue.product
WHERE
(
propertyvalue.value = 'Black' AND propertyvalue.property = 1
OR
propertyvalue.value = 'Red' AND propertyvalue.property = 1
)
AND product.active = 1
)

基本上,子查询与产品筛选查询相同,唯一的区别是它只选择产品ID,而不是所有内容。这样,无论查询可能有多复杂(您在注释中提到了数百个属性(,您都可以用这样的语句包装该逻辑,并从该特定子集中提取一些唯一的值。

最新更新