Requête pour afficher les relations hôte-modèle dans Zabbix
Cette requête permet de récupérer les données des tables Zabbix pour montrer quels hôtes utilisent des modèles spécifiques. Le défi réside dans le fait que les hôtes et les modèles sont stockés dans la même table, mélangés avec des identifiants tels que 11813 pour les hôtes et 11815 pour les modèles.
Pour résoudre ce problème, nous introduisons la table hosts_templates, qui établit la connexion. entre les hôtes et les modèles via ses trois colonnes : host_template ID, hostid et templateid.
Les hôtes Le tableau comprend des champs cruciaux comme l'ID d'hôte et le nom. Bien que la table hosts possède une colonne templateid, elle n'est pas utilisée.
Dans la table hosts_templates, nous pouvons déterminer quels hôtes utilisent quels modèles. Cependant, le défi se pose lorsque nous devons traduire les identifiants en noms correspondants.
Tentatives précédentes
Les requêtes initiales suivantes visaient à fournir des solutions partielles mais ont rencontré des problèmes de duplication :
select name, name from hosts_templates inner join hosts on hosts_templates.hostid = hosts.hostid; select name, name from hosts_templates inner join hosts on hosts_templates.templateid = hosts.hostid;
Solution
La solution nécessite deux jointures, chacun avec des alias de table différents :
SELECT h1.name as host_name, h2.name AS template_name FROM hosts_template AS t JOIN hosts AS h1 ON t.hostid = h1.hostid JOIN hosts AS h2 ON t.hosttemplateid = h2.hostid
Dans cette requête, la table hosts_template est alias t, tandis que la table hosts est alias h1 et h2 pour différencier les noms d'hôte et les noms de modèles.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!