过滤EAV表我有2个表:与多个条件
表objects
:
object_id | object_group_id
表attributes
:
attr_id | attr_object_id | attr_property_id | attr_value
现在,我想所有object_id
其中object_group_id = 1
和过滤器两个属性:
(attr_property_id = 1 AND attr_value <= '100000')
AND
(attr_property_id = 2 AND attr_value > '2000')
我试图建立一些疑问,比如:
SELECT * FROM objects as o
/* filter1 join */
INNER JOIN
attributes AS f1
ON
o.object_id = f1.attr_object_id
AND
f1.attr_property_id = 1
/* filter2 join */
INNER JOIN
attributes AS f2
ON
f1.attr_object_id = f2.attr_object_id
AND
f2.attr_property_id = 2
WHERE
o.object_group_id = 1
AND
f1.attr_value <= '100000'
AND
f2.attr_value > '2000'
...但还是不能让我需要什么。
你想要有1行attr_values或2行。请从你想要的结果中显示一个样本 –
我想为每个对象获得一行,这些属性匹配属性中的两个键值条件。 – WarGasm
看看这个。它生成您的查询数据透视表 http://stackoverflow.com/questions/33350524/pivot-a-table-and-display-n-ordered-time-series/33351008?noredirect=1#comment54499334_33351008 –