gpt4 book ai didi

mysql - 用于显示临时状态的 SELECT 语句(两个表)

转载 作者:行者123 更新时间:2023-11-29 13:12:22 25 4
gpt4 key购买 nike

我对标题感到抱歉,但我找不到正确的措辞。

情况:我有一个包含两个表的架构:

检查结果:

  • 节点名称
  • requirement_number
  • 状态
  • 原因
  • 来源

接受

  • 节点名称
  • requirement_number
  • 状态
  • 原因
  • valid_from
  • 有效期至
  • 接受者(邮件/姓名...)

因此,我们的想法是显示由 check_table 中的多个条目组成的检查的状态,其中现有的有效接受“覆盖” check_table 的结果/状态。一开始,并非所有信息都是必要的。输出应包含:

requirement_number | status | reason | source/acceptor

我怎样才能实现这个目标?

编辑:请求的输出

sec_ora_acceptance | CREATE TABLE `sec_ora_acceptance` (
`node_name` varchar(20) NOT NULL,
`instance_oracle_sid` varchar(20) NOT NULL,
`req_no` int(11) NOT NULL,
`status` enum('OK','NOK','OPEN','NA') NOT NULL,
`reason` text NOT NULL,
`acceptor` varchar(45) NOT NULL,
`acceptor_mail` varchar(50) DEFAULT NULL,
`date` date NOT NULL,
`valid_until` date DEFAULT '9999-12-31',
PRIMARY KEY (`node_name`,`instance_oracle_sid`,`req_no`)
)

sec_ora_result | CREATE TABLE `sec_ora_result` (
`check_id` int(11) NOT NULL,
`req_no` int(11) NOT NULL,
`status` enum('OK','NOK','OPEN','NA') NOT NULL COMMENT 'OK, NOK, OPEN, N(ot)A(pplicable)',
`reason` text,
PRIMARY KEY (`check_id`,`req_no`)
)

编辑#2:请求的信息(示例和结果)

我调整了 sec_ora_result 中的列,以使其更容易(不需要其他表进行比较 - 只需两个表)表 sec_ora_result:

check_id|req_no|status|reason|node_name|instance_oracle_sid|source
1|1|OPEN|Could not be tested automatically|abc|ora1|automatic_security_test
2|4|OK|Software Version is OK|abc|ora1|automatic_security_test
3|5|NOK|There is a Problem|abc|ora1|autotic_security_test

表 sec_ora_acceptance:

node_name|instance_oracle_sid|req_no|status|reason|acceptor|acceptor_mail|date|valid_until
abc|ora1|1|OK|Manual proof|Markus|markus@email.com|2014-02-20|9999-12-31

结果现在应包含以下内容

req_no|status|reason|source
1|OK|Manual proof|Markus
4|OK|Software Version is OK|automatic_security_test
5|NOK|There is a Problem|automatic_security_test

问候马库斯

最佳答案

编辑:据我了解,那么你需要这样的东西......

   SELECT SR.req_no, 
ISNULL( SA.status, SR.status) as Status,
ISNULL( SA.reason, SR.reason) as Reason,
ISNULL( SA.acceptor, SR.source) as Source
FROM sec_ora_result SR
left join sec_ora_acceptance SA on SA.req_no = SR.req_no

请注意,我们可以使用 ISNULL,因为状态、原因和接受者都不为空,因此如果它们为 NULL,则意味着整行为 NULL,然后我们可以采用 SR 字段,但是,如果这些字段中的任何一个可能为空,那么你需要一个常规的 CASE WHEN SA.req_no 为 null then Field1 else Field2 end。

另外,看看用于左连接的键,不确定您是否仅通过 req_no 进行过滤,或者您还需要其他内容...

关于mysql - 用于显示临时状态的 SELECT 语句(两个表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21910406/

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