存电表的表(from):
EMeterID(电表的ID)
第二张数据表(form1) 存每个电表各时间点的数据
EMeterID ,Time(时间),data(数据);
需求:
给定开始时间(beginTime),结束时间(endTime),
查所有电表 开始时间和结束时间的数据,
注意::(如果表中没有开始时间对应的数据,就找大于开始时间的最接近开始时间的数据;没有结束时间的话,就找小于结束时间的最接近结束时间的数据)
例如:表一有3条数据分别为EMeterID=1,2,3
表二存着所有电表各整点的数据,整点的数据可能没有
现在给定开始时间 1:00和结束时间9:00
这六条数据怎么求?
from是数据库的关键字,暂时用table1代表第一张存电表,table2代表第二张表(存每个电表各时间点的数据),可以用下面的试下
SELECT t0.EMeterID,t0.Time,t0.data from table2 t0,
(SELECT t1.EMeterID,max(Time) as max,min(Time) as min from table2 t1,table1 t2
where hour(Time)>='1' and hour(Time)<='9'
and t1.EMeterID = t2.EMeterID
GROUP BY t1.EMeterID ) tmp
where
t0.EMeterID = tmp.EMeterID and
t0.Time in( tmp.min , tmp.max )
先从数据表里筛选出在开始时间到结束时间范围的数据,在根据电表id进行分组取出最大的时间点和最小的时间点的数据
各个电表的表结构相同吗,如果相同则可以把所有表的数据先复制到一张临时表中 然后查 不是很明白你的需求(这六条数据怎么求?)