看来这就是您想要的。我更新了第一个查询以使用正确的ANSI
JOIN语法,然后对于其他两个查询,通过字段
LEFTJOIN上的a将它们连接在一起
stats_host:
SELECt s.stats_host, h.host_name, s.stats_avgcpu, s.stats_avgmem, s.stats_avgswap, s.stats_avgiowait, s7.7dayavgcpu, s7.7dayavgmem, s7.7dayavgswap, s7.7dayavgiowait, s30.30dayavgcpu, s30.30dayavgmem, s30.30dayavgswap, s30.30dayavgiowaitFROM sar_stats sINNER JOIN sar_hosts h on s.stats_host = h.host_idINNER JOIN sar_appgroups a on h.host_appgroup = a.group_id and a.group_name = 'Pervasive'INNER JOIN sar_environments e on h.host_environment = e.env_id and e.env_name = 'Staging 2'LEFT JOIN( SELECt s.stats_host, AVG(s.stats_avgcpu) AS '7dayavgcpu', AVG(s.stats_avgmem) AS '7dayavgmem', AVG(s.stats_avgswap) AS '7dayavgswap', AVG(s.stats_avgiowait) AS '7dayavgiowait' FROM sar_stats s WHERe DATE(stats_report_time) BETWEEN DATE_SUB(curdate(), INTERVAL 8 DAY) AND DATE_SUB(curdate(), INTERVAL 1 DAY) GROUP BY s.stats_host) s7 on s.stats_host = s7.stats_hostLEFT JOIN( SELECt s.stats_host, AVG(s.stats_avgcpu) AS '30dayavgcpu', AVG(s.stats_avgmem) AS '30dayavgmem', AVG(s.stats_avgswap) AS '30dayavgswap', AVG(s.stats_avgiowait) AS '30dayavgiowait' FROM sar_stats s WHERe DATE(s.stats_report_time) BETWEEN DATE_SUB(curdate(), INTERVAL 31 DAY) AND DATE_SUB(curdate(), INTERVAL 1 DAY) GROUP BY s.stats_host) s30 on s.stats_host = s30.stats_hostWHERe DATE(s.stats_report_time) = DATE_SUB(curdate(), INTERVAL 1 DAY);



