0

私はそのような2つのテーブルを持っています:

温度 :

+---------+---------------------+------+-----+---------+----------------+
| Field   | Type                | Null | Key | Default | Extra          |
+---------+---------------------+------+-----+---------+----------------+
| id      | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment |
| date    | datetime            | YES  | UNI | NULL    |                |
| capteur | int(11)             | YES  |     | NULL    |                |
| valeur  | float(3,1)          | YES  |     | NULL    |                |
+---------+---------------------+------+-----+---------+----------------+

ヒュミダイト :

+---------+---------------------+------+-----+---------+----------------+
| Field   | Type                | Null | Key | Default | Extra          |
+---------+---------------------+------+-----+---------+----------------+
| id      | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment |
| date    | datetime            | YES  | UNI | NULL    |                |
| capteur | int(11)             | YES  |     | NULL    |                |
| valeur  | int(11)             | YES  |     | NULL    |                |
+---------+---------------------+------+-----+---------+----------------+

同時にではなく、これら 2 つのテーブルに値が記録されています (毎分約 1 レコード)。

このコマンドを入力すると、過去 24 時間 (つまり 24 行) の 1 時間ごとの平均値が得られます。

$sql->query('SELECT hour(date) AS humhour,ROUND(AVG(valeur),1) AS avghum FROM humidite WHERE date >= (now() - INTERVAL 1 DAY) GROUP BY HOUR(date) ORDER BY DATE;');

今、私は同じことを取得しようとしていますが、両方のテーブルを使用しています。つまり、0h00 から 0h59 までのすべての値について、すべての温度の平均値とすべての湿度値の平均値が必要です。

私はこのコマンドを試します:

$result = $sql->query('
    SELECT  hour(temperature.date) AS hourtemp,
            hour(humidite.date) AS hourhum,
            ROUND(AVG(temperature.valeur),1) AS avgtemp,
            ROUND(AVG(humidite.valeur),1) AS avghum
    FROM temperature
    INNER JOIN humidite on hour(temperature.date) = hour(humidite.date)  
    WHERE temperature.date >= (now() - INTERVAL 1 DAY)
    GROUP BY HOUR(date)
    ORDER BY DATE;');

アイデア ?

ありがとうございました !

4

0 に答える 0