返回所有表A行,即使它们在表C中不存在

时间:2016-09-13 15:48:13

标签: sql oracle

select a.x, b.x, c.x, d.x, e.x

from A a

inner join B b
on a.col1 = b.y
and b.col1 = 'string_value'

inner join AC ac
on a.col1 = ac.col1

inner join C c
on c.col1 = ac.col2

inner join CDE cde
on cde.col1 = c.col1

inner join D d
on cde.col2 = d.col1

inner join E e
on cde.col3 = e.col1

表AC映射表A和表C之间的值。表CDE映射表C,D和E之间的值。

我有问题。列a.x按预期映射到列c.x. 时C表的值不等于A表中的值。查询返回来自A的行,其中ac.col1中存在a.col1。

我希望查询返回A中没有a.col1的行.c /。

我认为这是因为AC的内部联接。我已经尝试了AC的左,右和全外连接,但没有得到我需要的结果。我也尝试过这样的事情:

inner join AC ac
on a.col1 = ac.col1
or (a.col1 is not null and ac.col1 is null)

哪个没有给我任何更少/更多的行。重申 - 我需要更多行。我需要来自A的所有行,然后将其他表列值映射到它们,即使其他表可能没有任何行给出。如果可以,请提供帮助,如果描述混乱,请原谅。

0 个答案:

没有答案