2009-08-25 10 views
2

は、ではなく、の括弧に結合を入れて、msアクセス(2003)に通知する方法です。アクセスSQLクエリのかっこを無効にする

SELECT * 
     FROM a 
INNER JOIN b 
     ON a.a = b.a 
INNER JOIN c 
     ON b.c = c.c 

が、アクセスがクエリが間違っていることを私に伝えます:または少なくとも私のような何かをしたい(他のすべてのデータベースがありません)

せずにそれらを理解します。そうではありませんし、それはまた、すべて事前に

感謝を読み取るために単一のライン不可能に参加します

...私が狂いそうです。

ps。私は既に設定でANSI 92の互換性/サポートを有効にしました。

+0

新しいクエリを作成しようとしましたか?たぶん私は単純すぎるものをテストしたことがあるかもしれません(2つのテーブルのLeft Outer Join)。 – JeffO

+0

とmsアクセス2003年? – knittl

+0

はい。私はグラフィックデザインビューでそれを開始し、前後にSQLテキストビューに切り替えました。彼らは現れなかった。 – JeffO

答えて

2

悲しいことに、 Access 2003は、SQLについての「愚かな」ものです。それは腹立たしい(だけでなく、まだ正しい)であなたを残している、唯一のJOINを解析できるというAccessで「間違った」である:

SELECT * 
FROM a 
INNER JOIN (b INNER JOIN c ON b.c = c.c) 
    ON a.a = b.a 
+1

あなたの答えに感謝します。私はまだ彼らがそれらのばかな括弧を必要としている理由を理解していない。私には、彼らは本当に非論理的です – knittl

+0

誰がこれらの括約についてラットのお尻を与えるべきですか? –

+0

David W. Fenton「なぜ誰がこれらの括約物について気にしなければならないのですか?」コードを読む人間の視点から見ると、それらは不必要な混乱である。人間の記述コードの観点から、オプティマイザに明示的な順序で結合を実行させたいかもしれませんが、Accessデータベースエンジンはこれをやらせません。いわゆるANSI-92照会モードのでもSQL-92です)。 – onedaywhen

0

私はちょうどSQL ServerのCompantible構文(ANSI 92)を試してみましたし、このデータベースをチェック。

グラフィッククエリビルダですべてのテーブルと結合をセットアップし、すべてのかっこを処理しながらSQLエディタでカスタマイズする傾向があります。角括弧の使い方も私を狂わせてしまいます。私の会社のほとんどのアプリケーションはAccessからSQL Serverに移行されていることが幸いです。

+1

はい、私も。すべてのそれらの括弧と大括弧は私をナッツを運転しています。 – knittl

+0

あなたがアクセスを嫌って、その慣習に従わないことを望むなら、それを使用することをやめて、何か他のものを使用することは間違いないでしょう。しかしそれはあなたの損失です。 –

+0

バックエンドはms sqlサーバー上にあり、フロントエンドはアクセスします。どうして?顧客はそれを望んでいるので – knittl

2

アクセスヘルプAbout ANSI SQL query mode (MDB)を参照してください。

このモードでは、 ANSI-92レベル1の仕様に密接に準拠していない ANSI-92レベル1に準拠しています。

「ANSI-92」は「ANSI/ISO SQL-92」(「密接に適合しています」は「曖昧に似ています」と読みます)。

ボトムライン:かっこを含める必要があります。 Accessデータベースエンジンのオプティマイザは、テーブルの順番を変更する可能性があることに注意してください。

+0

(そして「密接に一致する」は「曖昧に似ている」)< - <3 – knittl