0
我試圖從MySQL數據庫中按小時計算某個給定ID的記錄數。在Google可視化圖表中將所有缺失的數據點初始化爲0
我遇到的問題是,如果給定小時內給定ID有0條記錄,我不會爲該表生成數據點。如果 在小時之間不計數,這將導致表格在兩個計數之間進行插值。
例如:下午1點4條記錄,下午2點0條記錄,下午3點2條記錄。該表將在4和2之間畫出一條直線,以便在桌面上出現下午2點有3條記錄,而實際上沒有記錄。
我確定原因是我沒有爲不存在的記錄提供null或0值,但我不知道如何去做。
在桌子上的一些信息:
id int AI
TagNumber int
TimeStamp timestamp
BatteryStatus varchar
Location int
這裏是我使用數以小時爲單位給定TagNumber的實例數的PHP代碼。
$result = $mysqli->('SELECT hour(TimeStamp) as Hour, count(*) as Count FROM table WHERE Location = 1 AND TagNumber = 12345678 GROUP BY Hour');
// The values here are hard coded for testing purposes.
$rows = array();
$table = array();
$table['cols'] = array(
array('label' => 'Hour', 'type' => 'number'),
array('label' => 'Count', 'type' => 'number')
);
while($row = mysqli_fetch_assoc($result)) {
$temp = array();
$temp[] = array('v' => (int) $row['Hour']);
$temp[] = array('v' => (int) $row['Count']);
$rows[] = array('c' => $temp);
}
$table['rows'] = $rows;
$jsonTable = json_encode($table);
然後我將json編碼表傳遞給google可視化api。
我相信我需要做的是每隔1到24小時設置一次沒有從mysql查詢返回的記錄設置爲0,我只是不知道如何實現這一點。
我試着用0作爲'Count'值來初始化一個從1到24的小時數組,但我肯定是做了錯誤的事情,而且PHP正在拋出錯誤。
在12點應讀0,而是它插11和13
之間這是我的圖與當前值:
- 小時10 - >計數4
- 11小時 - >計數2
- 小時13 - >計數1
- 小時14 - >計數3
在這種情況下,我需要時間1-> 9,12,和15-> 24顯示出0。
謝謝,我終於實現了非常類似的東西結束。很棒 – lrich 2014-09-19 14:34:48