Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

consulta mysql para juntar 3 consultas em 1 tabela enquanto calcula a média


Hora() parece que seria uma função útil para isso, já que você está olhando apenas para um único dia. Talvez algo assim funcione para você:
SELECT * FROM
 (SELECT HOUR(time) hour, avg(ph) AS avg_ph
  FROM ph 
  WHERE time >= NOW() - INTERVAL 1 DAY
  GROUP BY hour) p
JOIN 
 (SELECT HOUR(time) hour, avg(temperature) AS avg_temp
  FROM temperature1 
  WHERE time >= NOW() - INTERVAL 1 DAY
  GROUP BY hour) t ON t.hour = p.hour
JOIN 
 (SELECT HOUR(time) hour, avg(solids) AS avg_solids
  FROM solids 
  WHERE time >= NOW() - INTERVAL 1 DAY
  GROUP BY hour) s ON s.hour = p.hour;

Sendo que está usando associações internas, estou assumindo que sempre haverá pelo menos um registro em cada tabela por hora, mas parece uma suposição razoável.