我有3个表:device,device_properties和property。 device_properties表实现了设备和属性表之间的多对多关系。
在下面的示例数据中,名为ABC-2的设备只有3个属性,但ABC-1有4个属性(如device_properties表中所述):
device device_properties property
id name device_id property_id id name value
1 ABC-1 1 1 1 height 20cm
2 ABC-2 1 3 2 height 30cm
1 4 3 weight 100g
1 5 4 colour black
2 2 5 width 5cm
2 3 6 width 10cm
2 6
如果某些设备缺少某些属性(ABC-2在此示例中缺少颜色),我如何以下列格式从表中检索所有结果?
deviceId deviceName deviceHeight deviceWeight deviceColour deviceWidth
1 ABC-1 20cm 100g black 5cm
2 ABC-2 30cm 100g ---- 10cm
提前感谢您的帮助!
答案 0 :(得分:0)
试试这个
select
d.id deviceId,
d.name deviceName,
case when p.name='height' then p.value else null end deviceHeight,
case when p.name='weight' then p.value else null end deviceWeight,
case when p.name='colour' then p.value else null end deviceColour,
case when p.name='width' then p.value else null end deviceWidth
from
device d
join device_properties dp on dp.device_id=d.id
join porperty p on p.id=dp.property_id