之间选择我有3个表:SQL - 3个表
hosts (host_id, name, address, template_id);
hostgroup (hostgroup_id, name);
hosts_hostgroup (a, b);
第一个表保留所有主机,第二个所有的组,最后一个说哪个组属于每个主机。
请注意hosts_hostgroup
有两个不同的列名a
和b
。
哪个查询给我属于某个组的主机?
之间选择我有3个表:SQL - 3个表
hosts (host_id, name, address, template_id);
hostgroup (hostgroup_id, name);
hosts_hostgroup (a, b);
第一个表保留所有主机,第二个所有的组,最后一个说哪个组属于每个主机。
请注意hosts_hostgroup
有两个不同的列名a
和b
。
哪个查询给我属于某个组的主机?
SELECT h.*
FROM hosts h
INNER JOIN hosts_hostgroup hg ON hg.host_id = h.host_id
INNER JOIN hostgroup g ON g.hostgroup_id = hg.hostgroup_id
WHERE g.name = 'mygroupname'
SELECT hosts.* FROM hosts
INNER JOIN hosts_hostgroup ON hosts.host_id=hosts_hostgroup.a
WHERE hosts_hostgroup.b=(some id);
感谢您的回复。如果在表hosts_hostgroup中的列hostgroup_id和host_id在哪里像a和b? hosts_hostgroup(a,b); – aocferreira 2011-06-01 16:50:01
什么是“a”和什么是“b”? “a”是否保留host_id值或hostgroup_id值?同样,哪些值存储在“b”中?另外,为什么在所有其他标识符都有一个有意义的命名约定时使用名称“a”和“b”**? – 2011-06-01 16:55:35
是的,a和b具有相同的值host_id和hostgroup_id ......只是名称不同! – aocferreira 2011-06-01 16:57:26
为什么没有在你的 '主人' 表 'hostgroup_id' 列?为什么需要额外的'hosts_hostgroup'表? – Bernard 2011-06-01 16:42:31
@Bernard,主持人可以在> 1组 – 2011-06-01 16:43:28
@AJ:也许,但没有指定。 – Bernard 2011-06-01 16:46:54