gpt4 book ai didi

sql - Ora SQL 查询 : joining without references

转载 作者:行者123 更新时间:2023-12-04 13:52:23 25 4
gpt4 key购买 nike

我试图通过使用简单的查询来实现 Oracle 上的一些逻辑,但感觉卡住了。问题是我不能使用 PL-SQL,这让我有些头疼。

我有以下值的三个表

我想得到类似的东西:

SELECT T1.CODE,T2.CODE,T3.VALUE
FROM TABLE1 T1
JOIN TABLE2 T2 ON T1.REF = T2.CODE
JOIN TABLE3 T3 ON T2.REF = T3.CODE
WHERE T1.CODE = XXXXX

XXXX 的结果 = 98

98,2,CCC

只要参数 XXXXX 为 99、98、96、95,它就会返回我所期望的结果,但我需要的逻辑对 97 不起作用。

我的要求是,如果我在 Table2 中找不到链接,那么我应该在 Table3 中始终使用 DEF,并将未链接的值保留为 NULL。像这样的东西:

XXXX 的结果 = 97

97,NULL,AAA

我认为它可以通过使用 CASE 语句以一种不太“干净”的方式实现,但这是一个示例,其中显示的列数非常少。在我的真实情况下,它非常大......所以我想尽量避免使用 CASE 语句,因为它会大大增加它的复杂性。

我尝试了不同的方法,但我对 Oracle 的经验不足:)

有什么方法可以在不使用 PLSQL 和 CASE 的情况下实现这一点?

最佳答案

如果我没理解错的话,您需要改用外连接。然后,如果 T2.REFNULL,您可以使用 COALESCE 返回与“DEF”关联的值:

SELECT T1.CODE,
T2.CODE,
T3.VALUE
FROM TABLE1 T1
LEFT JOIN TABLE2 T2 ON T1.REF = T2.CODE
LEFT JOIN TABLE3 T3 ON COALESCE(T2.REF,'DEF') = T3.CODE
WHERE T1.CODE = XXXXX

关于sql - Ora SQL 查询 : joining without references,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28881886/

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