簡體   English   中英

使用Google圖表和MySQL,如何在不同的表具有相同的小時(日期時間)時顯示數據?

[英]How to display data from different tables when they have the same hour (datetime) using Google Charts and MySQL?

當小時內發生匹配時,我試圖顯示來自不同表的多維數據。 因此,例如,表1中的value1和表2中的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小時的數據。

我正在回答自己的問題,但這要歸功於WhiteHat在評論中提供的反饋。

第一個問題:我沒有在FROM子句中包含第二個表。

第二個問題:由於重復了Datetime值,因此我的數據示例效果不佳。

第三個問題:通過在代碼中添加HOUR函數來解決表之間的小時匹配問題。 見下文:

var data = google.visualization.arrayToDataTable([

 ['Hour1','Value1', 'Value2'],
 <?php 

 $query =   "SELECT HOUR(table1.Datetime) AS Hour1, table1.Value1, table2.Value2 ".
            "FROM table1, table2 ".
            "WHERE HOUR(table1.Datetime) = HOUR(table2.Datetime) ".
            "ORDER BY table1.Datetime ASC ".
            "LIMIT 24";

             $exec = mysqli_query($con,$query);
             while($row = mysqli_fetch_array($exec)){

             echo "[
             '".$row['Hour1']."',
             ".$row['Value1']." ,
             ".$row['Value2']."
             ],";
             }
             ?>


 ]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM