2013-09-19 1 views
1

Я работаю над некоторыми инструментами тренда/анализа и хотел бы запросить базу данных событий MySQL для метрики событий в час, чтобы я мог отправить метрику в виде datapoint в графите. Поскольку некоторые события будут в таблице состояния, а другие в таблице истории, я придумал основной запрос, который я ищу. Помня, что я отнюдь не администратор базы данных, я хотел бы узнать, как получить общее количество из обеих таблиц. Вот то, что я до сих пор:Zenoss MySQL Query - События в час

mysql> SELECT COUNT(*) FROM events.history WHERE firstTime > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 HOUR)) AND (severity='5' OR severity='3') 
-> UNION 
-> SELECT COUNT(*) FROM events.status WHERE firstTime > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 HOUR)) AND (severity='5' OR severity='3') 
-> ; 
+----------+ 
| COUNT(*) | 
+----------+ 
|  27 | 
|  267 | 
+----------+ 
2 rows in set (0.00 sec) 

mysql> 

Я надеюсь изменить SQL возвращать одну строку, с графом из обеих таблиц добавляется, так что в данном примере это было бы 294. Кто-то сказал мне, что я может выполнить это с помощью соединения, но у меня, похоже, возникли проблемы с получением синтаксиса.

ответ

0

Поместите союз в подзапрос, а затем используйте SUM(), чтобы добавить их вместе.

SELECT SUM(c) total 
FROM (SELECT COUNT(*) c FROM events.history WHERE firstTime > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 HOUR)) AND (severity='5' OR severity='3') 
     UNION 
     SELECT COUNT(*) c FROM events.status WHERE firstTime > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 HOUR)) AND (severity='5' OR severity='3') 
    ) u 
+0

Это прекрасно работает, спасибо! – Kurt

 Смежные вопросы

  • Нет связанных вопросов^_^