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的所有行,然后将其他表列值映射到它们,即使其他表可能没有任何行给出。如果可以,请提供帮助,如果描述混乱,请原谅。