Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle SQL DB select muti join error join error-ORA-00933:SQL命令未正确结束_Sql_Oracle - Fatal编程技术网

Oracle SQL DB select muti join error join error-ORA-00933:SQL命令未正确结束

Oracle SQL DB select muti join error join error-ORA-00933:SQL命令未正确结束,sql,oracle,Sql,Oracle,我试图连接几个表以获取数据,这里的问题是,当我应用过滤器时,我无法获取数据,我得到以下错误 以下是表格 在我的例子中,在加入表时引用的外键以_UID结尾 TBL_ABC_CUSTOMER_D TBL_BBC_CUSTOMER_STATUS_D TBL_NBC_CUSTOMER_TYPE_D TBL_KBC_CUSTOMER_SEGMENT_TYPE_D TBL_NCC_CUSTOMER_SEGMENT_D SQL查询 SELECT ABC.ABC_DES_NAME, ABC.ABC

我试图连接几个表以获取数据,这里的问题是,当我应用过滤器时,我无法获取数据,我得到以下错误

以下是表格

在我的例子中,在加入表时引用的外键以_UID结尾

TBL_ABC_CUSTOMER_D
TBL_BBC_CUSTOMER_STATUS_D
TBL_NBC_CUSTOMER_TYPE_D
TBL_KBC_CUSTOMER_SEGMENT_TYPE_D
TBL_NCC_CUSTOMER_SEGMENT_D
SQL查询

SELECT
   ABC.ABC_DES_NAME,
   ABC.ABC_DES_LASTNAME,
   ABC.ABC_DAT_BIRTH_DATE,
   ABC.ABC_LOC,
   ABC.ABC_MOBILE_NUM,
   ABC.ABC_FLG_GENDER,
   ABC.ABC_EMAIL,
   ABC.TBL_SYSTEM,
   ABC.TBL_EFFECTIVE_ON,
   ABC.TBL_EXPIRED_ON 
FROM
   DWH_SCHEMA.TBL_ABC_CUSTOMER_D ABC    /*CUSTOMER 1*/
   JOIN
      DWH_SCHEMA.TBL_BBC_CUSTOMER_STATUS_D BBC      /*CUSTOMER STATUS 2*/
      ON ABC.BBC_COD_CUSTOMER_STATUS_UID = BBC.BBC_COD_CUSTOMER_STATUS_UID 
      and ABC.TBL_EXPIRED_ON = TO_DATE('31.12.9999', 'DD.MM.YYYY')      --/*IT ALLOWS YOU TO CONSIDER THE LAST SNAPSHOT FOR EACH TABLE*/
      and BBC.TBL_EXPIRED_ON = TO_DATE('31.12.9999', 'DD.MM.YYYY')      --/*IT ALLOWS YOU TO CONSIDER THE LAST SNAPSHOT FOR EACH TABLE*/
   JOIN
      DWH_SCHEMA.TBL_NBC_CUSTOMER_TYPE_D NBC        /*CUSTOMER SUPPLIER 3*/
      ON ABC.NBC_COD_CUSTOMER_TYPE_UID = NBC.NBC_COD_CUSTOMER_TYPE_UID 
      and ABC.TBL_EXPIRED_ON = TO_DATE('31.12.9999', 'DD.MM.YYYY')      /*IT ALLOWS YOU TO CONSIDER THE LAST SNAPSHOT FOR EACH TABLE*/
      and NBC.TBL_EXPIRED_ON = TO_DATE('31.12.9999', 'DD.MM.YYYY')      /*IT ALLOWS YOU TO CONSIDER THE LAST SNAPSHOT FOR EACH TABLE*/
   JOIN
      DWH_SCHEMA.TBL_KBC_CUSTOMER_SEGMENT_TYPE_D KBC        /*CUSTOMER SEGMENT TYPE 4*/
      ON ABC.KBC_COD_SEGMENT_TYPE_UID = KBC.KBC_COD_SEGMENT_TYPE_UID 
      and ABC.TBL_EXPIRED_ON = TO_DATE('31.12.9999', 'DD.MM.YYYY')      /*IT ALLOWS YOU TO CONSIDER THE LAST SNAPSHOT FOR EACH TABLE*/
      and KBC.TBL_EXPIRED_ON = TO_DATE('31.12.9999', 'DD.MM.YYYY')      /*IT ALLOWS YOU TO CONSIDER THE LAST SNAPSHOT FOR EACH TABLE*/
   JOIN
      DWH_SCHEMA.TBL_NCC_CUSTOMER_SEGMENT_D NCC         /*CUSTOMER SEGMENT 5*/
      ON ABC.NCC_COD_SEGMENT_UID = NCC.NCC_COD_SEGMENT_UID 
      and ABC.TBL_EXPIRED_ON = TO_DATE('31.12.9999', 'DD.MM.YYYY')      /*IT ALLOWS YOU TO CONSIDER THE LAST SNAPSHOT FOR EACH TABLE*/
      and NCC.TBL_EXPIRED_ON = TO_DATE('31.12.9999', 'DD.MM.YYYY')      /*IT ALLOWS YOU TO CONSIDER THE LAST SNAPSHOT FOR EACH TABLE*/

  
错误

ORA-00933: SQL command not properly ended
00933. 00000 -  "SQL command not properly ended"
*Cause:    
*Action:
Error at Line: 9 Column: 1

如何解决上述错误?

先加入,然后加入条件

否:

是的:


将其应用于您的代码。

您也可以在
加入
语句中添加条件作为
。您好@Del谢谢您的建议,您能检查一下我是否能够运行查询,它运行得很好,但我有几个问题1)如果我将where替换为并且它正在工作,有什么区别,既然我在所有表中过滤相同的条件,那么有没有更好的方法以更好的方式进行重组?任何建议hi@Littlefoot,感谢您的建议,您能检查一下我是否能够运行查询,它运行得很好,但我有几个问题1)如果我将where替换为,它正在工作,有什么区别,因为我在所有表中过滤相同的条件,有没有更好的方法以更好的方式进行重组?有什么建议吗?不客气。区别在于过滤发生的“时刻”——在联接之前(这是您现在的方式;它表示“从这个表中过滤行,从那个表中过滤行,然后联接其余的行),或者联接之后(如果在所有联接完成后将所有这些过滤器放入where子句中)。
from emp e
where e.job = 'SALESMAN'
join dept d on d.deptno = e.deptno
where d.loc = 'LONDON'
from emp e join dept d on d.deptno = e.deptno
where e.job = 'SALESMAN'
  and d.loc = 'LONDON'