【发布时间】:2021-08-20 22:42:00
【问题描述】:
我试图在我想显示哪些主机使用我的 Zabbix 表中的哪个模板的地方找到这个查询。唯一的问题是主机和模板注册在同一个表中。它们在表中混合在一起,例如 ID 11813 是主机,11815 是模板。 现在我找到了一个表,其中定义了这两者之间的关系:hosts_templates。
此表有 3 列: host_template id、hostid、templateid
表 hosts 有很多列,但还包含:hostid、name 其中 hostid 包含主机以及模板。表 hosts 确实有一个 templateid 列,但它没有被使用。
在 hosts_templates 表中,我可以看到哪些主机使用了哪个模板。唯一的问题是我看到了 ID,并且我想看到与该 ID 匹配的名称。 到目前为止我所拥有的:
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;
这些查询的输出显示了我解决方案的一半,但重复了。
问题是我不能为第二列选择不同的名称,所以它只是复制了第一列,这不是我想要的...而且由于我已经内部加入了 hostid,所以我不能这样做第二次。所以我需要上面2个sql查询的组合。我有一种感觉,我是如此接近,但我无法得到它。
任何帮助将不胜感激!
【问题讨论】:
-
问题中请输入纯文本,而不是图片,以便我们在测试时复制粘贴。
-
在此处包含示例数据和预期结果。
-
我没有否决您的问题。但是你应该尽量写得更简洁,删掉不必要的单词,并给出想要的输出。这将帮助读者,让你有更多的机会得到答案。
-
你需要什么结果?
标签: mysql join many-to-many