Hour() ऐसा लगता है कि यह इसके लिए एक उपयोगी कार्य होगा, क्योंकि आप केवल एक ही दिन देख रहे हैं। शायद ऐसा कुछ आपके काम आए:
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;
ऐसा होने के कारण यह आंतरिक जुड़ाव का उपयोग कर रहा है, मैं यह धारणा बना रहा हूं कि प्रत्येक तालिका में घंटे के लिए हमेशा कम से कम एक रिकॉर्ड होगा, लेकिन यह एक उचित धारणा की तरह लगता है।