我收到了错误消息
在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
请帮我找错。感谢
答案 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))**