Mysql
 sql >> Base de données >  >> RDS >> Mysql

requête mysql pour joindre 3 requêtes dans 1 table tout en faisant la moyenne

Heure() semble que ce serait une fonction utile pour cela, puisque vous ne regardez qu'un seul jour. Peut-être que quelque chose comme ça fonctionnerait pour vous :

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;

Étant donné qu'il utilise des jointures internes, je suppose qu'il y aura toujours au moins un enregistrement dans chaque table pour l'heure, mais cela semble être une hypothèse raisonnable.