在 Zabbix 中显示主机模板关系的查询
此查询有助于从 Zabbix 表中检索数据,以显示哪些主机使用特定模板。挑战在于主机和模板都存储在同一个表中,并且与主机的 11813 和模板的 11815 等 ID 混合。
为了解决这个问题,我们引入了hosts_templates 表,它建立连接主机和模板之间通过其三列:host_template ID、hostid 和 templateid。
hosts 表包括关键字段,如 hostid 和 姓名。虽然hosts表拥有templateid列,但它并没有被使用。
在hosts_templates表中,我们可以确定哪些主机使用哪些模板。然而,当我们需要将 ID 翻译成相应的名称时,挑战就出现了。
之前的尝试
以下初始查询旨在提供部分解决方案,但遇到了重复问题:
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;
解决方案
该解决方案需要两个联接,每个联接具有不同的表别名:
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
在此查询中, hosts_template 表的别名为 t,而hosts 表的别名为 h1 和 h2,以区分主机名和模板名字。
以上是如何查询 Zabbix 以显示主机模板关系?的详细内容。更多信息请关注PHP中文网其他相关文章!