Nous utilisons une solution de surveillance (zabbix). Il stocke les données de tendances (MySQL 5.X) à l'aide d'une table appelée trends_uint avec la structure suivante (simplifiée):SQL Query - remplacer les valeurs codées en dur ... (MySQL)
itemid clock value_avg
1 1238774400 100
1 1250773900 70
1 1250773200 50
Le champ d'horloge stocke des valeurs datetime en utilisant le temps Unix. J'essaie d'extraire un rapport pour voir la consommation d'un élément surveillé. J'ai pensé faire cela en sélectionnant le plus ancien disque et le plus récent disque. Je l'ai réalisé en faisant ce qui suit:
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
Mon problème est que j'ai beaucoup de serveurs dont je veux calculer la consommation. Je ne veux pas changer la requête pour laquelle (changer l'itemid).
Le système dispose d'une autre table (éléments) à partir de laquelle je pourrais extraire les éléments que je dois mettre dans le rapport. Quelque chose comme SELECT itemid FROM items WHERE ...
Voici donc ma question: au lieu d'utiliser un itemid codé en dur, est-il possible de le rendre "dynamique", en utilisant par exemple les codes retournés d'une autre requête (ex .: SELECT ... FROM ... WHERE itemid IN (SELECT itemid FROM items WHERE ...
)?
TIA,
Bob
Merci. Je n » étais pas t clair, mais j'essaie d'y parvenir en utilisant simplement les fonctionnalités MySQL (préférence aux requêtes SQL pures si possible) .Je ferai une recherche sur les variables définies par l'utilisateur. –