gpt4 book ai didi

sql - Oracle:是否可以根据列值选择连接哪个表?

转载 作者:行者123 更新时间:2023-12-04 22:28:30 26 4
gpt4 key购买 nike

首先,这不是我的设计,我没有更改它的选项。我有三个表,它们定义了操作项与事件和审计之间的关系。这些表格以非常简化的形式设置如下:

ACTION_ITEMS
-------
ID SOURCE_ID SOURCE_TYPE
1 12345 INC
2 67890 AUD

INCIDENTS
-------
ID
12345

AUDITS
-------
ID
67890

SOURCE_TYPE 列指示其他两个表中的哪一个与该行相关。通过为事件和审计操作项创建单独的查询,将它们连接到适当的表,然后执行联合,获取所有记录的详细信息非常简单。

我想知道是否可以根据列的值有条件地连接到表。换句话说,像这样的东西,但确实有效:

SELECT
AI.*
,INC.*
,AUD.*
FROM ACTION_ITEMS AI
JOIN
CASE AI.SOURCE_TYPE
WHEN 'INC' THEN INCIDENTS INC ON (AI.SOURCE_ID = INCIDENTS.ID)
WHEN 'AUD' THEN AUDITS AUD ON (AI.SOURCE_ID = AUDITS.ID)
END;

**编辑以澄清我正在寻求从所有表中检索数据。

最佳答案

不,但是您可以连接两个 表并在您的连接子句中使用条件:

SELECT AI.*
FROM ACTION_ITEMS AI
LEFT JOIN INCIDENTS ON AI.SOURCE_TYPE = 'INC' AND (AI.SOURCE_ID = INCIDENTS.ID)
LEFT JOIN AUDITS ON AI.SOURCE_TYPE = 'AUD' AND (AI.SOURCE_ID = INCIDENTS.ID)

请注意,根据 SOURCE_TYPE,您将能够访问任一表中的列 - 如果右侧表中没有匹配项,则这些值将为 NULL

关于sql - Oracle:是否可以根据列值选择连接哪个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21737174/

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