Как отображать данные из разных таблиц, когда они имеют один и тот же час (дату и время), используя Google Charts и MySQL? - PullRequest
1 голос
/ 04 июня 2019

Я пытаюсь отобразить многомерные данные из разных таблиц, когда есть совпадение в час. Так, например, значение1 из таблицы1 и значение2 из таблицы2 должны отображаться в Y, а час в X. Я использую Google Charts и MySQL. Код работает, когда я выбираю вещи из одной таблицы, но когда я пытаюсь смешать результаты, он выдает эту ошибку: «Столбцы данных для оси # 0 не могут иметь тип string»

Я пытался использовать WHERE и пробовал JOIN для связывания столбца Datetime из таблицы1 с таблицей2, но безуспешно. Я знаю, что мне все еще нужно отформатировать Datetime, чтобы забрать только час, но я чувствую себя полностью застрявшим.

Вот что у меня в таблице 1:

enter image description here

А, в таблице 2:

enter image description here

Я ищу что-то вроде этого:

enter image description here

Ниже приведен код:

 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 часа данных.

1 Ответ

0 голосов
/ 05 июня 2019

Я отвечаю на свой вопрос, но это было благодаря отзывам, предоставленным в комментариях WhiteHat.

Первая проблема: я не включил вторую таблицу в предложение FROM.

Вторая проблема: мой пример данных не был хорош, так как у меня были повторения значений Datetime.

Третья проблема: сопоставление часов между таблицами было решено добавлением функции ЧАС в коде. Смотрите ниже:

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']."
             ],";
             }
             ?>


 ]);
...