2017-08-25 322 views
-1

私は、エラーメッセージが表示されましたORA-00907右カッコがありません

"ORA-00907右カッコがありません" エクセルVBAでこのクエリ (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

括弧を削除してください。ジョインであなたはそれらを必要としません – Jens

+0

全体のエイリアシングが台無しです。 tablename – XING

答えて

-1

Where句に余分な括弧のある

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

が第一の開口部を削除しますWhere節の後に。

** WHERE((SELOKGY.GYAR)= 1 OR(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条件の周りに括弧を維持することを好むI後でANDを追加します。しかし、ここにはまだまだ清潔感があります。

SELOKGY.GYAR in (1,2) 
+0

タクス。それは "AS"なしで動作します。 – Takacsg

関連する問題