[oracle]右连接非可接合列上

标签: sql Oracle
发布时间: 2017/4/15 19:06:30
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我的问题很简单,假设我要加入两个表之间,其中之一是一个正确的联接

select e.name, nvl(e.mobileNumber, c.secondaryNumber)
from T_employee e, t_contact c
where e.fieldOfficeCode = 10
and e.id = c.id (+)
and c.status = 1001

现在如果删除了最后一行的查询会做正确联接正确,而一旦最后一行是目前我将不会获得任何结果。有关如何解决此问题的任何想法。现在手头的查询是相对复杂和跨越 5 表但示例代码段将简化的实际问题

问候,

解决方法 1:

这是你的需要︰

and c.status (+) = 1001

或在现代语法中︰

select e.name, nvl(e.mobileNumber, c.secondaryNumber)
from T_employee e
left outer join t_contact c
  on e.id = c.id
  and c.status = 1001
where e.fieldOfficeCode = 10

您的查询转向外部联接回内部联接通过只选择联接的记录在哪里 c.status= 1001-排除所有的不匹配行,它为 null。

赞助商