0

私のモデルでは、データベースで利用可能な最後の日の $probe 値を 1 時間ごとに平均する次のクエリがあります。

$connection=Yii::app()->db;
$command=$connection->createCommand("SELECT AVG($probe), TIME FROM tbl_sensors GROUP BY DATE(TIME), HOUR(TIME) ORDER BY ID DESC LIMIT 0, 24");
$dataReader=$command->query();

ここで、このクエリを変更して、昨日、一昨日などの結果を取得したいと思います。

私が最初に考えたのは、コントローラーによって供給される変数を追加して、LIMIT パラメーターを変更することでした。ただし、次のとおりです。

SELECT AVG($probe), TIME FROM tbl_sensors GROUP BY DATE(TIME), HOUR(TIME) ORDER BY ID DESC LIMIT 24, 48

24 ではなく 48 の値を返します。なぜなのかわかりません。

どんなポインタも歓迎

4

1 に答える 1

1

LIMIT 24, 4824から48を意味するのではありません。24から(24 + 48)を意味します。
別の言い方をすれば、24から始まり、48レコードを取得します。

LIMIT 24, 24

http://dev.mysql.com/doc/refman/5.1/en/select.html

しかし、私はあなたが使用することをお勧めしますWHERE

SELECT AVG($probe), TIME FROM tbl_sensors
WHERE `TIME` BETWEEN ... AND ...
GROUP BY DATE(TIME), HOUR(TIME)
ORDER BY ID DESC LIMIT 0, 24  
于 2012-04-24T23:47:13.247 に答える