首先,这不是我的设计,我没有改变它的选项。我有三个表格定义了行动项目与事件和审计之间的关系。这些表中,以非常简单的形式中,设置了这样的:Oracle:是否可以根据列值选择要连接的表?
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;
**编辑澄清,我正在寻找来检索所有表数据。
嗯......或者可能是两个'INNER JOIN'子查询的'UNION'? – Filburt
@Filburt OP在问题的第二段提到。 –
呃,我错过了,因为我直接跳到你的答案。仍然想知道他不喜欢'UNION'... – Filburt