我想和另外三个人在一张桌子上做一个多重外部连接。连接是niddeclaration。目标是在我的模式中获得一个与之相关的所有内容的声明。现有代码做了一个与旧语法的外部连接:A.x= B.x(+)。“new”语法left outer join的作用似乎完全相同。我的问题是在同一个请求中多次使用它。似乎我不能使用唯一的“declaration d”标识符,这就是为什么我使用3个差异来执行相同的操作而不是一个。

select *
  FROM entreprise e,
       calendrier m,
       statut s,
       lignedeclaration l,
       categoriedeclaration c,
       declaration d left OUTER JOIN saisiecategoriedeclaration sc on d.niddeclaration = sc.niddeclaration ,
       declaration de left OUTER JOIN saisielignedeclaration sl on de.niddeclaration = sl.niddeclaration,
       declaration dl left OUTER JOIN reglement r on dl.niddeclaration = r.niddeclaration
 WHERE (d.nidentreprise = e.nidentreprise)
   AND d.niddeclaration = 12314689
   and de.niddeclaration = 12314689
   and dl.niddeclaration = 12314689;

简而言之,我想在同一个请求中执行2个普通连接和3个外部连接。与3个外部连接具有相同的“左”表。

最佳答案

您不需要重新包含declaration

declaration d
left OUTER JOIN saisiecategoriedeclaration sc on d.niddeclaration = sc.niddeclaration
left OUTER JOIN saisielignedeclaration sl on d.niddeclaration = sl.niddeclaration
left OUTER JOIN reglement r on d.niddeclaration = r.niddeclaration

注意省略逗号。您可能还需要重新编写查询中的其他表以使用现代连接语法,如果您尝试混合语法,我不确定会发生什么。

关于sql - 同一请求中有多个外部联接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4259131/

10-11 02:56
查看更多