【发布时间】:2019-06-04 15:56:56
【问题描述】:
我正在尝试显示来自不同表的多维数据,当小时有匹配时。例如,table1 中的 value1 和 table2 中的 value2 应该显示在 Y 中,小时显示在 X 中。我使用的是 Google Charts 和 MySQL。当我从单个表中选择内容时,该代码有效,但是当我尝试混合结果时,它会出现此错误:“轴 #0 的数据列不能属于字符串类型”
我尝试使用 WHERE 并尝试 JOIN 将 table1 中的 Datetime 列与 table2 链接,但没有成功。我知道我可能仍然需要格式化 Datetime 才能仅获取小时,但我感觉完全卡住了。
这是我在表 1 中的内容:
在表 2 中:
我想要这样的东西:
下面是代码:
var data = google.visualization.arrayToDataTable([
['Datetime','Value1', 'Value2'],
<?php
$query = "SELECT table1.Datetime, table1.Value1, table2.Value2 ".
"FROM table1 ".
"WHERE table1.Datetime = table2.Datetime ".
"ORDER BY table1.Datetime ASC ".
"LIMIT 24";
$exec = mysqli_query($con,$query);
while($row = mysqli_fetch_array($exec)){
echo "[
'".$row['Datetime']."',
".$row['Value1']." ,
".$row['Value2']."
],";
}
?>
]);
注意:我将图表限制为 24 行,因为当插入新数据时(每小时),仅显示最近 24 小时的数据。
【问题讨论】:
-
鉴于上面的 sql,您需要在
FROM语句中包含table2-->FROM table1, table2 -
我也试过这个,但似乎行开始重复。图表显示超过 4 行。 ://
-
当行重复时,这通常意味着每个表中有不止一行符合
WHERE语句中的条件——例如,在您提供的示例表中,有每个表中有 3 行,日期为2019-06-04 00:00:00,因为WHERE只声明table1.Datetime = table2.Datetime,这将导致重复行 -- 你想对这些行的值求和吗? -
我明白了.. 我不想“求和”这些值,我需要在图表中拥有的是:2019-06-04 00:00:00 - 50 和 80(来自ID1,值 1/table1 和值 2/table2) 2019-06-04 00:00:00 - 30 和 20(来自 ID2) 2019-06-04 00:00:00 - 66 和 34(来自 ID3) 2019- 06-04 15:01:10 - 44 和 33(来自 ID4)
-
更改
WHERE语句 -->WHERE table1.Datetime = table2.Datetime and table1.ID = table2.ID
标签: php mysql database charts google-visualization