【发布时间】:2017-07-30 12:03:42
【问题描述】:
我有 MySQL DB,它每分钟存储一次数据(对于日期 1.7.2017,我有 1012 个值 1):
id| value |timeDate
1 | 1 |2017-07-01 ...
2 | 0 |2017-07-01 ...
3 | 1 |2017-07-01 ...
.....
我想每天计算值为 1 的值(函数):
$stmt = $db->prepare("SELECT day(dTimeDate), COUNT(*) FROM sensorData
WHERE MONTH(dTimeDate) = :dateMonth AND YEAR(dTimeDate) = :dateYear AND _idSensor = :idSensor AND dValue = :valueSensor
GROUP BY dTimeDate");
$stmt->execute(array(':dateMonth' => $m, ':dateYear' => $y, ':idSensor' => $idSensor, ':valueSensor' => $valueSensor));
$row2 =$stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($row2 as $row) {
echo $row['day(dTimeDate)']. ' - ' .$row['COUNT(*)'].'<br/>';
}
我希望得到(比如我的 SQL,example):
(day | Count)
1 - 1012 (count all values with value 1 in day 1)
2 - 105
...(31 lines, one for every day)
相反,我得到:
(day | Count)
1 - 1
1 - 1
...(1012 lines of day 1 and value 1)
2 - 1
row2 返回所有数据的数组,而不是每天。
我怎样才能得到期望值?
【问题讨论】:
-
尝试
GROUP BY dTimeDate, value -
我试过了,得到同样的数据。
-
我试图重现您的代码行为。我不确定您的预期结果是什么意思。 1和2是什么? id 还是值?
-
我的选择'SELECT day(dTimeDate), COUNT(*) FROM sensorData' 返回日期和计数值。这意味着'第 1 - 1012 天(按第 1 天计算值)。 'row2' 重新生成所有数据的数组(请参阅更新)。