ORA-00907缺少右括号

时间:2017-08-25 09:25:40

标签: excel oracle vba join

我收到了错误消息

  在Excel VBA中为此查询

“ora-00907缺少右括号”   (Oracle 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

请帮我找错。感谢

2 个答案:

答案 0 :(得分: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患有" parenthitis"实际上 - 例如。

(((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)

答案 1 :(得分:-1)

Where子句

中有一个额外的左括号
  

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

删除Where子句后的第一个开头。

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