首页 > 解决方案 > 在两个表上结合 INNER 和 OUTER JOIN

问题描述

我有两个表,每个表在 Oracle 中都有 table_name 和 column_name。我试图加入 table_name 但想在 column_names 上留下外部联接。我尝试了所有方法,但未能写出正确的方法。请指教。

Table A and B
------------------
table_name
column_name

因此,表 A 将包含条目;

table_name, column_name
AAA, Col1
AAA, Col2
AAA, col3

而表 B 将有条目;

table_name, column_name
AAA, Col1
AAA, col2

理想情况下,sql有点像这样;

select A.TABLE_NAME, A.COLUMN_NAME, B.COLUMN_NAME 
from 
cert2_all_tab_columns   A,
ITF_SYNAPSE B 
WHERE 
A.TABLE_NAME = B.TABLE_NAME AND
A.COLUMN_NAME (+)= B.COLUMN_NAME AND
 A.TABLE_NAME='ABC'  

所以期望的结果将是;

table_name, column_name_fromA, column_name_fromB
AAA, col1, col1
AAA, col2, col2
AAA, col3, null

标签: sql

解决方案


此查询有效。我的语法正确吗?

select TABLE_NAME,C1, C2
from 
(SELECT TABLE_NAME, COLUMN_NAME, COLUMN_NAME AS C1 FROM A) A
LEFT JOIN 
(SELECT TABLE_NAME, COLUMN_NAME, COLUMN_NAME AS C2 FROM B) B
USING (TABLE_NAME, COLUMN_NAME);

推荐阅读