外部加入Oracle中的加号(+)

时间:2015-11-19 09:21:41

标签: oracle join

我在Oracle中有一些表。

表1包含:

id|name
1|boy
2|roy

表2包含:

id|value
1|90
2|100

表_3包含:

id|class
1|A
2|B

我想加入所有三张桌子。

Query_1:

SELECT A.ID,A.NAME,B.VALUE,C.CLASS 
FROM 
TABLE_1 A, TABLE_2 B, TABLE_3 C
WHERE 
A.ID=B.ID(+) AND
B.ID=C.ID(+)

OR

Query_2:

SELECT A.ID,A.NAME,B.VALUE,C.CLASS 
FROM 
TABLE_1 A, TABLE_2 B, TABLE_3 C
WHERE 
A.ID=B.ID(+) AND
A.ID=C.ID(+)

哪一个是真的?

1 个答案:

答案 0 :(得分:0)

当您需要外部加入时: 您的查询将包含两个或多个表,其中可能不存在每个记录的匹配项。例子最好解释。如果您有两个表:“父”和“工作”。如果你想问一个问题:我们在当地雇主的父母名单中有什么联系人,内部联接可以正常工作:

    select w.employer, w.phone, w.address,p.name, p.phone
    from work w, parent p
    where w.person_id = p.person_id

如果问题是我们的父母在哪里工作 - 有些人可能失业并且在“工作”表中没有匹配 - 现在你需要一个外部联接。在Oracle SQL中:

    select p.name, p.phone, w.employer, w.phone, w.address,
    from work w, parent p
    where p.person_id =  w.person_id(+)

(+)总是在我们需要“综合”添加缺失id的一侧。