我有3张桌子,我加入了2张桌子,我正在加入。
问题是所有都是内连接,但有时候1条件可以变为NULL 所以我想把1 NULL和第二个值。 请参阅查询
`
select
cr.id
, cm.orgaparty_uri
, cm.role_uri
, am.orgaparty_uri
, am.role_uri
, gu.name_t
, gu1.name_t
from
cdm_clientrelation cr
,cdm_commercial_roles cm
,cdm_commercial_roles am
,gcl_user gu
,gcl_user gu1
where
cm.agreement_uri ='cdm:clientRelation/'+cr.id
and cm.role_uri ='gcl:role/CommercialManager'
and cm.orgaparty_uri= 'gcl:user/'+gu.id
AND am.agreement_uri='cdm:clientRelation/'+cr.id
AND am.role_uri='gcl:role/AdministrativeManager'
AND am.orgaparty_uri = 'gcl:user/'+gu1.id`
有些时候,可能是cdm_commercial_roles表中没有任何一行用于商业或管理员角色。所以它不会得到它和内部连接失败 但我需要如果Row不在那里,它会像我的select语句一样给出NULL 名称 等待你的回复
答案 0 :(得分:0)
如果您希望在不是所有表格之间的对应关系时显示这些行,您可以LEFT OUTER JOIN
来解决您的问题。
表A和表的左外连接(或简称左连接)的结果 B总是包含“左”表(A)的所有记录,即使是 join-condition在“右”表中找不到任何匹配的记录 (B)。这意味着如果ON子句匹配B中的0(零)记录, 连接仍会在结果中返回一行 - 但每个中都有NULL 来自B的列。这意味着左外连接返回所有 左表中的值加上右表中的匹配值 (如果没有匹配的连接谓词,则为NULL)。如果是正确的表 返回一行,左表返回多个匹配的行 对于它,右表中的值将重复 左表上的不同行。从Oracle 9i开始,LEFT OUTER 可以使用JOIN语句以及(+)。