A “Full Outer Join” is interpreted as :
It does then :
A “Full Outer Join”:
select table1.id "ID_table1", table2.id "ID_table2"
from table1 FULL OUTER JOIN table2
on table1.id = table2.id;
The syntax below is not correct:
select table1.id "ID_table1", table2.id "ID_table2"
from table1, table2
where table1.id (+)= table2.id (+);
You will get this message:
ORA-01468: a predicate may reference only one outer-joined table
01468. 00000 - "a predicate may reference only one outer-joined table"
*Cause:
*Action:
Error at Line: 55 Column: 19
On workaround is to make two outer join on each table and to join the data set with an union such as:
SELECT
table1.id "ID_table1",
table2.id "ID_table2"
FROM
table1,
table2
WHERE
table1.id = table2.id (+)
UNION
SELECT
table1.id "ID_table1",
table2.id "ID_table2"
FROM
Table1,
Table2
WHERE
table1.id (+) = table1.id
The source table:
table1 (inner set) | table2 (outer set) |
|
---|---|---|
Column ID | Column ID | Column ID_2 |
A | A | |
B | B | A |
D | C | C |
The Result:
ID_table1 ID_table2
---------- ----------
A A
B B
D
C