Pertanyaan untuk Memaparkan Perhubungan Templat Hos dalam Zabbix
Pertanyaan ini membantu mendapatkan semula data daripada jadual Zabbix untuk menunjukkan hos yang menggunakan templat tertentu. Cabarannya terletak pada hakikat bahawa kedua-dua hos dan templat disimpan dalam jadual yang sama, bercampur dengan ID seperti 11813 untuk hos dan 11815 untuk templat.
Untuk menangani perkara ini, kami memperkenalkan jadual hosts_templates, yang mewujudkan sambungan antara hos dan templat melalui tiga lajurnya: host_template ID, hos dan templateid.
Jadual hos termasuk medan penting seperti hos dan nama. Walaupun jadual hos mempunyai lajur templateid, ia tidak digunakan.
Dalam jadual hosts_templates, kita boleh menentukan hos yang menggunakan templat mana. Walau bagaimanapun, cabaran timbul apabila kami perlu menterjemah ID kepada nama yang sepadan.
Percubaan Sebelumnya
Pertanyaan awal berikut bertujuan untuk menyediakan penyelesaian separa tetapi menghadapi pertindihan isu:
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;
Penyelesaian
Penyelesaian memerlukan dua cantuman, setiap satu dengan alias jadual berbeza:
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
Dalam pertanyaan ini, jadual hosts_template dialiaskan sebagai t, manakala jadual hos dialiaskan sebagai h1 dan h2 untuk membezakan antara nama hos dan templat nama.
Atas ialah kandungan terperinci Bagaimana untuk Menyoal Zabbix untuk Menunjukkan Hubungan Templat Hos?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!