Gan*_*kar 3 sql inner-join amazon-web-services presto amazon-athena
表 1 ( aws_complianceitem) 没有主键,该示例数据:
| 地位 | 严重程度 | 顺从型 | 标题 | 资源ID | 地区 |
|---|---|---|---|---|---|
| 合规的 | 低的 | 安全 | 2002年补丁 | i-76765434 | ap-南-2 |
| 不合规的 | 高的 | 审计 | 2002 kb 补丁 | i-76765434 | ap-南-2 |
| 合规的 | 中等的 | 安全 | 2002 kb 补丁 | i-98765434 | ap-南-1 |
表 2 ( aws_instanceinformation) 将ipaddress和instanceid作为唯一键,并具有以下示例数据:
| 计算机名 | 实例ID | IP地址 | 地位 | 帐户ID |
|---|---|---|---|---|
| SD-SDYH-re22 | i-76765434 | 10.33.23.1 | 符合的 | 887878787654 |
| 不合规的 | i-98765434 | 10.72.33.1 | 不合规的 | 098776765478 |
表 3 ( configinstancestate) 将ipaddress和resourceid作为唯一键以及此示例数据:
| 资源ID | IP地址 | 实例状态 |
|---|---|---|
| i-76765434 | 10.33.23.1 | 跑步 |
| i-98765434 | 10.72.33.1 | 停止了 |
我需要包含所有正在运行的instanceid 的数据。
这是期望的结果:
| 地位 | 实例状态 | 严重程度 | 标题 | 资源ID | 地区 | IP地址 |
|---|---|---|---|---|---|---|
| 合规的 | 跑步 | 低的 | 2002年补丁 | i-76765434 | ap-南-2 | 10.33.23.1 |
| 不合规的 | 跑步 | 高的 | 2002 kb 补丁 | i-76765434 | ap-南-2 | 10.33.23.1 |
| 合规的 | 停止了 | 中等的 | 2002 kb 补丁 | i-98765434 | ap-南-1 | 10.72.33.1 |
尝试使用以下查询进行完整外连接,
SELECT
t1.status
, t1.severity
, t1.title
, t1.region
, t1.resourceid
, t2.ipaddress
, t2.computername
, t2.status
, t3.instancestate
FROM
aws_complianceitem t1
FULL OUTER JOIN aws_instanceinformation t2
ON t1.resourceid = t2.instanceid
FULL OUTER JOIN configinstancestate t3
ON t2.ipaddress = t3.resourceid
Run Code Online (Sandbox Code Playgroud)
但是我们过滤了作为此查询的一部分获得的结果,instancestate=blank,有空记录
看起来两个内部联接 - 具有相关条件 - 做你想做的事:
select ac.*, c.*
from aws_complianceitem ac
inner join aws_instanceinformation ai
on ai.resourceid = ac.resourceid
inner join configinstancestate c
on c.resourceid = ac.resourceid and c.ipaddress = ac.ipaddress
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2753 次 |
| 最近记录: |