Мы используем решение для мониторинга (zabbix). Он хранит данные трендов (MySQL 5.X), используя таблицу Trend_uint со следующей структурой (упрощенно):
itemid clock value_avg
1 1238774400 100
1 1250773900 70
1 1250773200 50
Поле часов хранит значения даты и времени, используя время Unix.
Я пытаюсь извлечь отчет, чтобы увидеть потребление отслеживаемого элемента. Я думал сделать это, выбрав самую старую запись и самую новую запись. Я добился этого, сделав следующее:
SELECT
(SELECT t.clock FROM trends_uint t WHERE t.itemid = 1 AND t.clock IN (SELECT MIN(t.clock) FROM trends_uint t WHERE t.itemid = 1)) AS minClock,
(SELECT t.value_avg FROM trends_uint t WHERE t.itemid = 1 AND t.clock IN (SELECT MIN(t.clock) FROM trends_uint t WHERE t.itemid = 1)) AS minValueAvg,
(SELECT t.clock FROM trends_uint t WHERE t.itemid = 1 AND t.clock IN (SELECT MAX(t.clock) FROM trends_uint t WHERE t.itemid = 1)) AS maxClock,
(SELECT t.value_avg FROM trends_uint t WHERE t.itemid = 1 AND t.clock IN (SELECT MAX(t.clock) FROM trends_uint t WHERE t.itemid = 1)) AS maxValueAvg,
(SELECT maxClock - minClock) AS timeGap,
(SELECT minValueAvg - maxValueAvg) AS valueGap,
(SELECT timeGap/86400) AS daysGap,
(SELECT valueGap/daysGap/1024/1024) AS consumeMB
Моя проблема в том, что у меня есть серверы лота, с которых я хочу рассчитать потребление. Я не хочу менять запрос, для которого (изменение itemid).
В системе есть еще одна таблица (элементы), из которой я могу извлечь элементы, которые мне нужно добавить в отчет. Что-то вроде SELECT itemid FROM items WHERE ...
Так что это мой вопрос: вместо использования жестко заданного itemid, возможно ли сделать его "динамическим", например, используя возвращенные коды из другого запроса (например: SELECT ... FROM ... WHERE itemid IN (SELECT itemid FROM items WHERE ...
)?
ТИА
Bob