我正在尝试加入两个 Postgres 查询以获得工头报告。我正在尝试查看哪些服务器分配给木偶类 180
第一个查询是:
select puppetclass_id , host_id from host_classes where puppetclass_id = 180
结果如下所示
puppetclass_id | host_id
----------------+---------
180 | 378
180 | 377
第二个查询是:
select id, name, operatingsystem_id, enabled from public.hosts
结果如下所示:
id | name | operatingsystem_id | enabled
-----+-----------------------------+--------------------+---------
404 | s4-somedevserver- 4r5 | 17 | t
411 | mob-omedevserver- 4r2 | 19 | t
我正在尝试将第一个查询的host_id和第二个查询的 id 匹配在一起,但删除重复项。我有以下查询,但它只显示我们所有的服务器,而不仅仅是与 puppetclass 180 匹配的服务器
SELECT DISTINCT id, name, operatingsystem_id
FROM
(SELECT puppetclass_id , host_id
FROM host_classes
WHERE puppetclass_id = 180) t
CROSS JOIN
(SELECT id, name, operatingsystem_id, enabled
FROM public.hosts) m
ORDER BY id
任何正确方向的指针将不胜感激
我想你只是想在这里INNER JOIN
:
SELECT DISTINCT t2.*
FROM host_classes t1
INNER JOIN public.hosts t2
ON t1.host_id = t2.id
WHERE
t1.puppetclass_id = 180
ORDER BY t2.id;
您当前正在两个表之间进行CROSS JOIN
,这将倾向于给出每个表中所有记录的交叉乘积。