代码之家  ›  专栏  ›  技术社区  ›  jayjaypg22

同一请求中的多个外部联接

  •  1
  • jayjaypg22  · 技术社区  · 15 年前

    我想在一张表上与其他3个表进行多个外部联接。联接是nideclaration。目标是获得一个声明,其中包含我的模式中与之相关的所有内容。现有代码使用旧语法进行了一次外部联接:其中a.x=b.x(+)。“new”语法左外部联接的作用似乎完全相同。我的问题是在同一个请求中多次使用它。似乎我不能使用唯一的“声明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个外部联接。三个外部连接与同一个“左”表。

    1 回复  |  直到 15 年前
        1
  •  4
  •   Simon    15 年前

    您不需要重新包括 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
    

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