数据库
首页 > 数据库> > mysql查询显示来自一个ID列的多个表

mysql查询显示来自一个ID列的多个表

作者:互联网

我正在尝试查找此查询,我想显示哪些主机使用我的Zabbix表中的哪个模板.唯一的问题是主机和模板在同一个表中注册.它们在表中混合,例如ID 11813是主机,11815是模板.
   现在我找到了一个表,其中定义了这两者之间的关系:hosts_templates.

该表有3列:
   host_template id,hostid,templateid

表主机有许多列,但也包含:hostid,其中hostid包含主机的名称以及模板.表主机确实有一个templateid列,但不使用它.

在表hosts_templates中,我可以看到哪些主机使用哪个模板.唯一的问题是我看到ID,我想看到与该ID匹配的名称.
到目前为止我所拥有的:

表hosts_templates的输出

名称输出,来自表主机的hostid

到目前为止我尝试了什么:

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查询的组合.我感觉自己如此接近,但我无法得到它.

任何帮助将不胜感激!

解决方法:

你必须加入两次.为表格提供不同的别名,以便您区分它们.

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

标签:mysql,join,many-to-many
来源: https://codeday.me/bug/20191003/1850330.html