gpt4 book ai didi

sql - 加入 2 个 postgres sql 查询

转载 作者:行者123 更新时间:2023-11-29 14:32:21 25 4
gpt4 key购买 nike

我正在尝试加入两个 Postgres 查询以获取 The foreman 报告。我正在尝试查看哪些服务器分配给了 puppet 类 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,这将倾向于给出每个表中所有记录的叉积。

关于sql - 加入 2 个 postgres sql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49810703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com