2017-08-25 150 views
-1

我收到錯誤消息ORA-00907缺少右括號

「ORA-00907缺少右括號」 此查詢在Excel VBA (甲骨文ODBC,ADO):

SELECT SELOKGY.GYAR, SELOK.SELOKID, SELOK.NEV, SELOK.AKTIV, SELOK.CSOP1, SELOKCS.SZINT, SELOKCS.NEV, SELOKCS.LEMEZGEP, SELOKCS.FELDOLGOZOGEP, SELOK.CSOP2, SELOKCS_1.SZINT, SELOKCS_1.NEV, SELOKCS_1.LEMEZGEP, SELOKCS_1.FELDOLGOZOGEP, SELOK.CSOP3, SELOKCS_2.SZINT, SELOKCS_2.NEV, SELOKCS_2.LEMEZGEP, SELOKCS_2.FELDOLGOZOGEP 
FROM SELOKGY RIGHT JOIN (SELOKCS AS SELOKCS_2 RIGHT JOIN (SELOKCS AS SELOKCS_1 RIGHT JOIN (SELOKCS RIGHT JOIN SELOK ON SELOKCS.KOD = SELOK.CSOP1) ON SELOKCS_1.KOD = SELOK.CSOP2) ON SELOKCS_2.KOD = SELOK.CSOP3) ON SELOKGY.SELOK = SELOK.SELOKID 
WHERE (((SELOKGY.GYAR)=1 Or (SELOKGY.GYAR)=2)) 
ORDER BY SELOKGY.GYAR, SELOKCS.SZINT, SELOKCS.NEV, SELOKCS_1.SZINT, SELOKCS_1.NEV, SELOKCS_2.SZINT, SELOKCS_2.NEV 

請幫助我找到錯誤。感謝

+0

刪除括號。在加入。你不需要它們 – Jens

+0

整個「混淆」都搞砸了。使用表名 – XING

回答

-1

有Where子句中一個額外的開口括號

WHERE(((SELOKGY.GYAR)= 1或(SELOKGY.GYAR)= 2))

刪除所述第一開口在Where子句之後。

** WHERE((SELOKGY.GYAR)= 1或(SELOKGY.GYAR)= 2))**

+0

的簡單別名,有2個左括號和2個左括號,因此Count適合。不應該是問題 – Jens

+0

@Jens是的,你是對的。對不起,我的壞 – Rizwan

2

沒有與您的SQL幾個問題:

1)Oracle不支持as關鍵字爲別名:

SELOKCS AS SELOKCS_1 

它應該是:

SELOKCS SELOKCS_1 

2)您的連接語法錯誤,不需要括號。這樣做更像:

RIGHT JOIN t2 ON t2.xx = t1.xx 
RIGHT JOIN t3 ON t3.xx = t3.xx 
... etc. 

您的SQL實際上遭受「親子鑑定」 - 例如

(((SELOKGY.GYAR)=1 Or (SELOKGY.GYAR)=2)) 

其實只是:

(SELOKGY.GYAR=1 Or SELOKGY.GYAR=2) 

這可能即使在這種情況下,可以簡化爲:

SELOKGY.GYAR=1 Or SELOKGY.GYAR=2 

...但我更喜歡保持周圍OR條件括號中的情況下,我稍後添加AND。但是仍有這裏更合適的方法:

SELOKGY.GYAR in (1,2) 
+0

Thaks。它的工作原理沒有「AS」。 – Takacsg