Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用左联接和历史表更正MySQL查询的结果_Mysql_Sql - Fatal编程技术网

使用左联接和历史表更正MySQL查询的结果

使用左联接和历史表更正MySQL查询的结果,mysql,sql,Mysql,Sql,您好,我想创建一个查询,返回公寓中电表的状态 我有表BR_公寓,BR_仪表和BR_参数值。 仪表状态的默认值为激活状态(1)当状态发生变化时,所有历史数据都存储在BR_参数_值表中 我只需要公寓中仪表的最后状态或默认值。 当前查询返回BR_参数值中的所有记录 我对的查询示例 如果我建立的查询不正确,有人能纠正我吗?或者教我一些如何正确完成我想做的事情的技巧 编辑: 我已经根据Gordon的答案更新了示例,如果date是NOW(),则该示例有效,但我还想使用相同的历史值查询来根据特定日期获取仪表状

您好,我想创建一个查询,返回公寓中电表的状态

我有表BR_公寓,BR_仪表和BR_参数值。 仪表状态的默认值为激活状态(1)当状态发生变化时,所有历史数据都存储在BR_参数_值表中

我只需要公寓中仪表的最后状态或默认值。 当前查询返回BR_参数值中的所有记录

我对的查询示例

如果我建立的查询不正确,有人能纠正我吗?或者教我一些如何正确完成我想做的事情的技巧

编辑:


我已经根据Gordon的答案更新了示例,如果date是
NOW()
,则该示例有效,但我还想使用相同的历史值查询来根据特定日期获取仪表状态。

您可以使用该查询从参数表中获取最新的参数值(只需在
where
子句中添加
语句即可):

选择m.*IFNULL(pva.ParameterValue,1)作为MeterIsActive,
IF(pva.ParameterValue)
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
                  )
      )