我对查询有疑问。 有两个表:
Objects table:
==============
Object ID Date
1 2016-03-15
2 2016-01-20
Attributes table:
=================
Parent ID Attribute AttributeData
1 Size XL
2 Size S
2 Price 20
The query is to join the data to get this:
==========================================
Objet ID Size Price
1 XL NULL
2 S 20
But I only get this:
==========================================
Objet ID Size Price
2 S 20
LEFT JOIN没有帮助 - 因为属性表中没有ID1价格的条目。
我很抱歉这样的新手。
很高兴得到任何帮助。
斯特芬
答案 0 :(得分:2)
我认为条件聚合可以满足您的需求:
select parentid,
max(case when attribute = 'Size' then attributedata end) as size,
max(case when attribute = 'Price' then attributedata end) as price
from attributes
group by parentid;
使用left join
即可:
select o.*, s.attributedata as size, p.attributedata as price
from objects o left join
attributes s
on o.objectid = s.parentid and s.attribute = 'Size' left join
attributes p
on o.objectid = p.parentid and p.attribute = 'Price';
请注意,要使其工作,属性名称的条件必须在on
子句中,而不是where
子句。