【问题标题】:Outer join in OracleOracle 中的外部联接
【发布时间】:2014-10-10 09:14:57
【问题描述】:

我已经为 Oracle 中的外部联接编写了代码。它给了我“缺少关键字”错误

create table Fenergo_data_01 as select tab1.* , tab2.* , tab3.*, tab4.*
from  Fenergo_ext_ref_data tab1 full outer join  Fenergo_cntry_incorp_data tab2
full outer join  Fenergo_address_data tab3
full outer join Fenergo_MCH_data tab4
on tab1.FGO_ID = tab2.FGO_ID and tab1.FGO_ID = tab3.FGO_ID 
and tab1.FGO_ID = tab4.FGO;

谁能帮帮我?

【问题讨论】:

    标签: sql oracle outer-join


    【解决方案1】:

    您需要为每个join(在on 子句中)指定连接条件,而不是像您所做的那样在最后一次:

    CREATE TABLE     Fenergo_data_01 AS
    SELECT           tab1.* , tab2.* , tab3.*, tab4.*
    FROM             Fenergo_ext_ref_data tab1 
    FULL OUTER JOIN  Fenergo_cntry_incorp_data tab2 ON tab1.FGO_ID = tab2.FGO_ID
    FULL OUTER JOIN  Fenergo_address_data tab3 ON tab1.FGO_ID = tab3.FGO_ID 
    FULL OUTER JOIN Fenergo_MCH_data tab4 ON tab1.FGO_ID = tab4.FGO;
    

    【讨论】:

      【解决方案2】:

      on 子句必须包含在 join 语句中。

      create table Fenergo_data_01 as 
      select tab1.* , tab2.* , tab3.*, tab4.*
      from  Fenergo_ext_ref_data tab1 
      full outer join Fenergo_cntry_incorp_data tab2 on tab1.FGO_ID = tab2.FGO_ID
      full outer join Fenergo_address_data tab3 on tab1.FGO_ID = tab3.FGO_ID
      full outer join Fenergo_MCH_data tab4 on tab1.FGO_ID = tab4.FGO;
      

      【讨论】:

        【解决方案3】:

        on 子句必须跟在连接之后:

        create table Fenergo_data_01 as select tab1.* , tab2.* , tab3.*, tab4.*
        from  Fenergo_ext_ref_data tab1 full outer join  Fenergo_cntry_incorp_data tab2 on tab1.FGO_ID = tab2.FGO_ID 
        full outer join  Fenergo_address_data tab3 on tab1.FGO_ID = tab3.FGO_ID 
        full outer join Fenergo_MCH_data tab4 on tab1.FGO_ID = tab4.FGO;
        

        有关join 语法的更多信息,请参阅this 页面

        【讨论】:

          【解决方案4】:

          您需要在每次加入后指定ON,如下所示:

          create table Fenergo_data_01 as 
          select tab1.* , tab2.* , tab3.*, tab4.*
           from  Fenergo_ext_ref_data tab1 
           full outer join  Fenergo_cntry_incorp_data tab2 on tab1.FGO_ID = tab2.FGO_ID
           full outer join  Fenergo_address_data tab3 on tab1.FGO_ID = tab3.FGO_ID
           full outer join Fenergo_MCH_data tab4 on tab1.FGO_ID = tab4.FGO;
          

          【讨论】:

            【解决方案5】:

            一个有效的联接如下(联接后跟条件)

            SELECT * FROM TABA 
                 JOIN TABB 
                     ON TABA_SOMEID = TABB_SOMEID
            

            试试下面的查询:

            create table Fenergo_data_01 as 
            select tab1.* , tab2.* , tab3.*, tab4.*
            from  
                Fenergo_ext_ref_data tab1 
                full outer join  
                Fenergo_cntry_incorp_data tab2
                     on tab1.FGO_ID = tab2.FGO_ID
                     full outer join  
                     Fenergo_address_data tab3
                            on tab1.FGO_ID = tab3.FGO_ID 
                            full outer join 
                            Fenergo_MCH_data tab4
                                  on tab1.FGO_ID = tab4.FGO;
            

            【讨论】:

              猜你喜欢
              • 2015-01-03
              • 2020-10-25
              • 2016-07-25
              • 1970-01-01
              • 2013-09-04
              • 1970-01-01
              • 2011-04-07
              • 1970-01-01
              • 2012-10-12
              相关资源
              最近更新 更多