2012-04-24 16 views
0

私のモデルでは、データベースで利用できる最後の日について私たちが平均$プローブ値を時間ごとに使用する次の照会があります。SQL照会に変数を追加して日々の結果を得る

$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の値を返します。なぜそれが分かりませんか?

任意のポインタが

+0

何リミット24は24'をオフセット 'について使用することをお勧めしますか? – ngen

答えて

1

LIMIT 24, 48を歓迎するが、それは24から(24 + 48)に意味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 
+1

ありがとう私はLIMITを納得できなかったことをたくさんありました。次の日のデータを取得するために変数を24ずつ増やすことができるので、私はそれを使うよりもむしろそれを使用します。 – SFcrawford

関連する問題