Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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
Php MySQL查询从不同的数据库及时输出到一个图形中_Php_Mysql_Data Structures_Highcharts - Fatal编程技术网

Php MySQL查询从不同的数据库及时输出到一个图形中

Php MySQL查询从不同的数据库及时输出到一个图形中,php,mysql,data-structures,highcharts,Php,Mysql,Data Structures,Highcharts,我构建了两个不同的数据库: 1-每5分钟测量一次温度 2-每3小时的温度预测 我想在一张(高图)图中获得12小时的测量和预测数据。 在图表中,x栏只需显示每小时一次,Y栏显示温度 使用php,我可以获得两个独立的数据结构,并将它们放在一起,但我想通过创建一个具有时间依赖性的sql查询来更动态地完成这项工作,这样我可以查询1小时或24小时,仍然可以得到一个漂亮的图。 如果有两个结构相同的数据库,这将很容易, 但这在我上场的时候是不会发生的:) 数据库1: id created_on

我构建了两个不同的数据库: 1-每5分钟测量一次温度 2-每3小时的温度预测

我想在一张(高图)图中获得12小时的测量和预测数据。 在图表中,x栏只需显示每小时一次,Y栏显示温度

使用php,我可以获得两个独立的数据结构,并将它们放在一起,但我想通过创建一个具有时间依赖性的sql查询来更动态地完成这项工作,这样我可以查询1小时或24小时,仍然可以得到一个漂亮的图。 如果有两个结构相同的数据库,这将很容易, 但这在我上场的时候是不会发生的:)

数据库1:

id  created_on          timestamp           temp
1   2014-01-04 17:15:12 2014-01-04 17:15:02 23.75
2   2014-01-04 17:20:12 2014-01-04 17:20:02 23.75
3   2014-01-04 17:25:12 2014-01-04 17:25:02 23.75
4   2014-01-04 17:30:12 2014-01-04 17:30:02 23.69
5   2014-01-04 17:35:12 2014-01-04 17:35:02 23.75
数据库2: t0000 t/m t2100是预测温度的时间戳

day         created_on          t0000   t0300   t0600   t0900   t1200   t1500   t1800   t2100
2014-01-12  2014-01-13 00:00:10 2.52    4.24    5.83    6.51    7.58    7.55    6.23    0.34
2014-01-13  2014-01-14 02:00:10 4.31    6.54    6.32    8.28    9.13    8.46    5.38    4.13
2014-01-14  2014-01-14 23:00:08 4.18    2.58    2.95    8.24    7.54    6.7 4.96    4
2014-01-15  2014-01-14 23:00:08 3.58    2.77    2.64    2.53    4.56    4.56    4.54    4.58
我提出了database2结构,每天更新8次。 我不仅收到一天的信息,而且每天收到8次多天的更新,这会产生很多行,所以现在每次收到更新我都会重写列。这个解决方案为我节省了大量的时间(因为我喜欢保留一些历史记录),但现在给了我另一个难题:将它们连接在一起


我为我的sql魔法而努力,希望有更强大的力量。。。某处;)

在我看来,您需要一个
温度
表,每行包含:

  station      the location name of the measurement, e.g. BOS, LHR, etc.
  timestamp    the time of the measurement 
  temp         (FLOAT) the measurement
每次新测量值到达时,您都需要插入新行。您可以将(
时间戳
)组合用于此表上的主键

按天总结,你只需做

 SELECT station, DATE(timestamp), 
        MIN(temp) AS low,
        AVG(temp) AS avg,
        MAX(temp) AS high
   FROM temperature
  GROUP BY station, DATE(timestamp)
  ORDER BY station, DATE(timestamp)
这种查询模式可以生成各种有趣的摘要

不要担心观察表中的行太多。这样的报告即使在总结几十年的测量数据时也不到一分钟

我最近碰巧一直在研究这个问题。这是一封信。


这里有一个很好的世界历史数据来源:

有几个问题。首先,当您编写“两个不同的数据库”时,您的意思是“同一数据库中的两个不同表”吗?这一点很重要,因为您可以在查询中连接多个表。第二,为什么你说每天观察8次会产生太多的行?为什么每次观察不一行?另一个问题:在列上创建
的目的是什么?它们只是用来记录的吗?或者它们与观测时间有某种联系吗?不,它们是不同的数据库。我建立了一个名为“2014年气温”的数据库。所有单线温度设备自动添加并记录到单独的表中,谁的表是ROM名称。通过一些代码,我可以找到所有的ROM表,并将它们显示在图形中。这很容易处理,但如果这不是正确的选择,我愿意重新考虑。创建的_on实际上是添加数据的时间戳,day列用作读取数据的唯一键。从相同仪器获取信息的单独表格通常不被认为是好的设计。将
列放在一个表中更明智。如果你这样做,处理新的或丢失的仪器会更容易。在添加一个单独的“天”栏之前,请考虑查找索引范围扫描的概念。也许我在不同数据库中的数据分离不是很好的检索。但我正在考虑一个最佳的解决方案。也许是更好的一个:1个数据库,列为:timestamp-sensor1、sensor2、sensor3。我唯一想知道的是预测数据应该如何更新。我当前的预测数据结构允许我提前几天获得信息,并且每3小时我可以更新值以获得更准确的数据。如果我将在一个带有传感器的表中执行此操作,我认为我应该过滤旧的预测条目,删除旧的预测条目,然后添加一个新条目,否则我将在表中保留过去5天的“当前”数据。嗯,很值得思考。MySQL有一个很好的
INSERT ON DUPLICATE KEY UPDATE
命令,可以简化预测表的维护。我已经在重复使用它,因为我每3小时更新一次当前预测数据。我要重写我当前的数据库。为了不压倒openweathermap网站,我坚持3小时的更新,但我会制作一个私人缓存,每5分钟更新一次预测。完成后,我会报告。我已经重建了数据库结构,现在所有传感器都在一个数据库中。编写代码要容易得多,但我正在考虑未来的另一个问题。。。到了2015年,桌子上会挤满了人。谢谢你抽出时间!