【发布时间】:2020-06-05 02:33:26
【问题描述】:
我正在创建一个 oracle 查询,它将向目标表插入有关列的信息,以检查其他 2 个表的左连接是否成功。该过程的一部分是使用 3 个不同的 ID 检查连接结果。
Target - Table3.JoinCheck
Joining Table (Source 1 and 2)
Source1 - Table1.Key1,
Table1.Key2,
Table1.Key3
Source2 - Table2.Key1
我想在 table1.key1 = table2.key1、table1.key2 = table2.key1、table1.key3 = table2.key1 上使用表 1 和 2 进行左连接。如果其中任何一个连接成功,它将向 Table3.JoinCheck 返回“OK”。如果不成功,我想返回如下错误信息:'table1.key1 = table2.key1 not match','table1.key2 = table2.key1 not match', 'table1.key3 = table2.key1 not match'
INSERT INTO table3 (JoinCheck) c
SELECT CASE
WHEN a.key1 IS NOT NULL
OR a.key2 IS NOT NULL
OR a.key3 IS NOT NULL
THEN 'OK'
CASE
WHEN a.key1 IS NULL
THEN 'table1.key1 = table2.key1 not matched'
CASE
WHEN a.key2 IS NULL
THEN 'table1.key2 = table2.key1 not matched'
CASE
WHEN a.key3 IS NULL
THEN 'table1.key3 = table2.key1 not matched'
END AS Joincheck
FROM table1 a
LEFT JOIN table2 b
ON a.key1 = b.key1
OR a.key2 = b.key1
OR a.key3 = b.key1
【问题讨论】:
-
请在代码问题中给出minimal reproducible example--cut & paste & runnable code,包括最小的代表性示例输入作为代码;期望和实际输出(包括逐字错误消息);标签和版本;明确的规范和解释。给出尽可能少的代码,即您显示的代码可以通过您显示的代码扩展为不正常的代码。 (调试基础。)对于包含 DBMS 和 DDL(包括约束和索引)和输入为格式化为表的代码的 SQL。 How to Ask 暂停总体目标的工作,将代码砍到第一个表达式,没有给出你期望的内容,说出你期望的内容和原因。
-
不清楚你想用什么级别的软件做什么。 “检查是否”和“返回以下错误消息”含糊不清。请澄清。 PS 请在发帖前查看编辑框下方帖子的格式化版本。阅读代码和引用的内联和块格式的编辑帮助。