2017-08-25 129 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