WeatherStation: объединение запросов Mysql и среднее значение по таблицам

У меня есть две такие таблицы:

температура :

+---------+---------------------+------+-----+---------+----------------+
| 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    |                |
+---------+---------------------+------+-----+---------+----------------+

У меня есть значения, записанные в этих двух таблицах не одновременно (около 1 записи каждую минуту).

Если я ввожу эту команду, я получаю средние значения за каждый час за последние 24 часа (таким образом, 24 строки):

$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;');

Теперь я пытаюсь получить то же самое, но с обеими таблицами. То есть, для всех значений между 0:00 и 0:59 мне нужно среднее значение всех значений температуры и среднее значение всех значений влажности.

Я пробую эту команду:

$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;');

Идея ?

Благодарю вас !


person iero    schedule 24.09.2013    source источник
comment
ГРУППА ПО ЧАСАМ(температура.дата) ? Но я не уверен, что это сработает. date - это столбец для влажности и температуры, поэтому MySQL не может знать, какой столбец он должен использовать.   -  person kmas    schedule 24.09.2013
comment
Я добавил больше информации, и код вполне работает благодаря другой странице stackoverflow. Пожалуйста, продолжайте читать здесь   -  person iero    schedule 26.09.2013