Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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_Join - Fatal编程技术网

MySQL查询两个包含不同日期的表

MySQL查询两个包含不同日期的表,mysql,join,Mysql,Join,我有一个小问题不能处理好。 我需要从两个表中导出一些数据。两个表仅包含两个字段。第一个是日期时间,第二个包含值。 我想用图表把这些数据按日期分组。让我举例说明 表A: SELECT * FROM tableA order by Time desc limit 10; 输出: 2016-08-26 12:50:10 27 2016-08-26 12:45:02 26.9 2016-08-26 12:40:04 26.8 2016-08-26 12:35:03 26

我有一个小问题不能处理好。 我需要从两个表中导出一些数据。两个表仅包含两个字段。第一个是日期时间,第二个包含值。 我想用图表把这些数据按日期分组。让我举例说明

表A:

SELECT * FROM tableA order by Time desc limit 10;
输出:

2016-08-26 12:50:10     27
2016-08-26 12:45:02     26.9
2016-08-26 12:40:04     26.8
2016-08-26 12:35:03     26.5
2016-08-26 12:30:03     27
2016-08-26 12:25:10     27.1
2016-08-26 12:21:28     27.2
2016-08-26 12:20:58     26.9
2016-08-26 12:20:28     27
2016-08-26 12:20:00     26.9
表B:

SELECT * FROM tableB order by Time desc limit 10;

2016-08-26 12:56:03     30.1
2016-08-26 12:50:10     29.9
2016-08-26 12:45:02     29.8
2016-08-26 12:42:05     30.1
2016-08-26 12:35:04     30.1
2016-08-26 12:31:03     30
2016-08-26 12:25:11     30
2016-08-26 12:20:01     29.6
2016-08-26 12:17:01     29.6
2016-08-26 12:10:02     29.5
如您所见,时间值不相等。我想从两个表中获取值,对它们进行分组并绘制图表。图表不是问题。例如,我希望每5分钟为每个表取一个值。 任何帮助都将不胜感激

谢谢

西蒙

分组为5分钟(300秒)。如果多个值落在一个区间内,则取最大值

select  from_unixtime(U*300) as date,
        max(if(T='A',val,NULL)) as A_VAL,
        max(if(T='B',val,NULL)) as B_VAL
  from (
    select ceil(unix_timestamp(date)/300) as U, val, 'A' as T
      from tableA
      WHERE date BETWEEN '2016-08-26 12:20:00' AND '2016-08-26 12:55:00'
    union all
    select ceil(unix_timestamp(date)/300) as U, val, 'B' as T
      from tableB
      WHERE date BETWEEN '2016-08-26 12:20:00' AND '2016-08-26 12:55:00'
   ) A
 group by U
 order by U
结果:

2016-08-26 12:15:00 NULL    29.5
2016-08-26 12:20:00 26.900  29.6
2016-08-26 12:25:00 27.200  29.6
2016-08-26 12:30:00 27.100  30.0
2016-08-26 12:35:00 27.000  30.0
2016-08-26 12:40:00 26.500  30.1
2016-08-26 12:45:00 26.800  30.1
2016-08-26 12:50:00 26.900  29.8
2016-08-26 12:55:00 27.000  29.9
2016-08-26 13:00:00 NULL    30.1

两个表中的时间条目是否相同?请显示所需的查询结果。如果时间值必须组合得多近,那么输出应该提供给具有双轴值的Google图表,如下所示:(参见双Y图表)。所以输出应该是我将要翻译的东西:datetime,valuefromA,valuefromB,所以我可能需要将datetime四舍五入到组中。。。。这个例子中的值是相似的,但是我需要一个包含不同值的图形,所以我需要双X轴。表是一样的。谢谢谢洛麦克!结果近乎完美。您能否建议我如何设置时间范围,即“2016-08-26 12:20:00和2016-08-26 12:55:00之间的时间”。如果我试图指定它,我得到了一个空结果。@Simon现在在外部查询中没有合适格式的datetime。只有秒/300保持在那里。最佳决策(最快的查询速度)-指定读取任何表的日期条件。我更新了答案以反映这一点