当前位置:  开发笔记 > 数据库 > 正文

左外连接(三个表之间的连接)?

如何解决《左外连接(三个表之间的连接)?》经验,为你挑选了1个好方法。

我有一个主表,我必须从中获取数据.我有一个左外连接,其中字段将匹配40%的时间.然后我有另一个连接,我需要匹配表A中的数据.

这是伪代码中的SQL.此查询无效.

- 这是我想要做的部分,但不起作用.AND H.COL3 = A.STATE ????

我正在使用IBM DB2.

SELECT DISTINCT
  APP_NO as app_no,
  A.STATE as state
  ...
  ... Fields
  ...
FROM 
  TABLE_A A
LEFT OUTER JOIN  
  TABLE_B HIST
ON
  HIST.COL1 = A.COL1
, TABLE_C B  
LEFT OUTER JOIN
  TABLE_D H  
ON
  H.COL2 = B.COL2
-- This is the part I want to do but doesn't work.
AND
  H.COL3 = A.STATE????
WHERE
  A.BRANCH = 'Data'

Mark.. 13

我想你可以像这样重写它(但我可能会错误地读你的陈述)

FROM 
  TABLE_A A LEFT OUTER JOIN TABLE_B HIST ON
      HIST.COL1 = A.COL1
  LEFT OUTER JOIN TABLE_D H ON 
      H.COL3 = A.STATE
  LEFT OUTER JOIN TABLE_C B ON H.COL2 = B.COL2
WHERE
  A.BRANCH = 'Data'

此外,IBM doco对此错误说明:

与JOIN运算符或MERGE语句关联的ON子句无效.说明:

ON子句中的列引用必须仅引用ON子句范围内的表的列.

所以我可能会弄错,当外部连接"H.COL3 = A.STATE"超出On子句的范围时,它看起来就像是错误的ON子句,因为表A不在该范围内.



1> Mark..:

我想你可以像这样重写它(但我可能会错误地读你的陈述)

FROM 
  TABLE_A A LEFT OUTER JOIN TABLE_B HIST ON
      HIST.COL1 = A.COL1
  LEFT OUTER JOIN TABLE_D H ON 
      H.COL3 = A.STATE
  LEFT OUTER JOIN TABLE_C B ON H.COL2 = B.COL2
WHERE
  A.BRANCH = 'Data'

此外,IBM doco对此错误说明:

与JOIN运算符或MERGE语句关联的ON子句无效.说明:

ON子句中的列引用必须仅引用ON子句范围内的表的列.

所以我可能会弄错,当外部连接"H.COL3 = A.STATE"超出On子句的范围时,它看起来就像是错误的ON子句,因为表A不在该范围内.

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有