甲骨文加入多个表?

误入歧途

我正在尝试执行以下操作

  select
   TA.C1 ,TB.C1 ,TC.C1
   from  TableA TA ,TableB TB , TableC TC  
   where TA.C1 = "ABC"
   AND TA.C2 = TB.C1
   and TA.C3 = TC.C1

结果是

在此处输入图片说明

我的目的是向此查询添加更多表

  select
   TA.C1,TB.C1,TC.C1,TD.C1,TE.C1
   from  TableA TA ,TableB TB , TableC TC , TableD TD, TableE TE
   where TA.C1 = "ABC"
   and TA.C2 = TB.C1
   and TA.C3 = TC.C1
   and TA.C4 = TD.C1
   and TD.C2 = TE.C1

但是由于TD.C1列包含空值,而TA.C4始终包含一些值,所以得到以下结果。

在此处输入图片说明

预期的结果是

在此处输入图片说明

我曾尝试使用Joins联接4个表:

select
     TA.C1,TB.C1,TC.C1,TD.C1
     from  TableA TA          
     JOIN TableB TB ON (TA.C2 = TB.C1)
     JOIN TableC TC ON (TA.C3 = TC.C1)
     LEFT JOIN TableD TD ON (TA.C4 = TD.C1)
     AND TA.C1 = "ABC"

结果非常接近我的预期:

在此处输入图片说明

问题是我不确定如何加入第五张表(表E),因为这与表A没有任何关系。

shree.pat18

您可以只在表E中添加另一个左连接到表D。基本上,表D和E之间存在关系,并且输入到表E中的数据必须与表E保持一致。如果没有数据,则该关系仍然存在,因此联接将根据需要返回空值。

 select
 TA.C1,TB.C1,TC.C1,TD.C1, TE.C1
 from  TableA TA          
 INNER JOIN TableB TB ON (TA.C2 = TB.C1)
 INNER JOIN TableC TC ON (TA.C3 = TC.C1)
 LEFT JOIN TableD TD ON (TA.C4 = TD.C1)
 LEFT JOIN TableE TE ON (TD.C2 = TE.C1)
 AND TA.C3 = "ABC"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章