您好我想创建查询,该查询返回公寓中电表的状态。
我有BR_Apartment,BR_Meter和BR_Parameter_Value表。仪表状态的默认值是活动的(1)状态更改后,所有历史记录数据都存储在BR_Parameter_Value表中。
我只需要公寓的计价器的最后状态或默认值。当前查询从BR_Parameter_Value返回所有记录。
我在SQL Fiddle上查询的示例
如果我建立的查询不正确,或者有人教我一些正确完成我想做的事的提示,有人可以纠正我吗?
编辑:
我已经基于戈登的答案更新了示例,如果日期是有效的,那么NOW()
我可以使用它,但是我想对历史值也使用相同的查询,以根据特定日期获取仪表状态。
您可以使用它来从参数表中获取最新的参数值(只需exists
在where
子句中添加语句):
SELECT m.*, IFNULL( pva.ParameterValue, 1 ) AS MeterIsActive,
IF( pva.ParameterValue <1, 'meterNotActive', '' ) AS MeterTypeClass
FROM BR_Meter m INNER JOIN
BR_Apartment a
ON ( m.ApartmentID = a.ApartmentID ) LEFT JOIN
BR_Parameter_Value pva
ON ( pva.ForeignID = m.MeterID AND
pva.ParameterDate <= NOW( ) AND
pva.ParameterID =12
)
WHERE m.ApartmentID = 2452 and
(not exists (select 1
from BR_Parameter_value pv2
where pv2.ForeignID = pva.ForeignID and
pv2.parameterid = pva.parameterid and
pv2.ParameterDate > pva.ParameterDate
)
)
我不知道默认值是什么意思。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句