【问题标题】:Outer join between three tables causing Oracle ORA-01417 error三个表之间的外连接导致 Oracle ORA-01417 错误
【发布时间】:2016-03-22 02:07:11
【问题描述】:

我们正在尝试在表 B 和表 C 上运行表 A 之间的外连接,但出现错误:

ORA-01417: 一个表最多可以外部连接到另一个表

我们怎样才能让它发挥作用?

查询:

select a.xxx, a.yyy, b.col1, c.col1 from a, b, c
where
a.xxx = b.xxx (+) and 
a.yyy = b.yyy (+) and
a.xxx = c.xxx (+) and 
a.yyy = c.yyy (+) 

【问题讨论】:

    标签: sql oracle outer-join


    【解决方案1】:

    使用正确的显式join 语法。我认为以下可能是您想要做的:

    select a.xxx, a.yyy, b.col1, c.col1
    from a left join
         b
         on a.xxx = b.xxx and a.yyy = b.yyy left join
         c
         on a.xxx = c.xxx and a.yyy = c.yyy;
    

    【讨论】:

      【解决方案2】:

      你可以试试:

      select a.xxx, y.xxx, b.col1, c.col2
      from a
      left join b on a.xxx = b.xxx and a.yyy = b.yyy
      left join c on a.xxx = c.xxx and a.yyy = c.yyy
      

      【讨论】:

        【解决方案3】:

        请不要在 from 子句中使用逗号,而是使用 JOIN 子句。

        试试这个:

        select a.xxx, a.yyy, b.col1, c.col1 
        from a LEFT JOIN b ON a.xxx = b.xxx AND a.yyy = b.yyy
               LEFT JOIN c ON a.xxx = c.xxx AND a.yyy = c.yyy 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-11-22
          • 2019-09-08
          • 1970-01-01
          • 2014-12-22
          • 1970-01-01
          相关资源
          最近更新 更多