日別アーカイブ: 2015年1月15日

[Access] SQLでJOINをかけるときに括弧が必要

Accessで直接SQLを記述する場合、3つ以上のテーブルを結合する時には括弧をつける必要があります。

次の3つのテーブルを例に挙げます。

名簿
フィールド名 データ型
名簿ID オートナンバー
氏名 短いテキスト
職業ID 数値型
都道府県ID 数値型
職業
フィールド名 データ型
職業ID 数値型
職業名 短いテキスト
都道府県
フィールド名 データ型
都道府県ID 数値型
都道府県名 短いテキスト

ここで2つのテーブルをLEFT JOINしてみます。
次の記述は正常に実行されます。

SELECT 氏名, 職業名 
FROM 名簿 
LEFT JOIN 職業 ON 名簿.職業ID = 職業.職業ID

次に3つのテーブルをLEFT JOINします。
これは「演算子がありません。」とエラーがでます。

SELECT 氏名, 職業名, 都道府県名 
FROM 名簿
LEFT JOIN 職業 ON 名簿.職業ID = 職業.職業ID
LEFT JOIN 都道府県 ON 名簿.都道府県ID = 都道府県.都道府県ID

これは次のように括弧で囲むと正常に実行できます。

SELECT 氏名, 職業名, 都道府県名 
FROM 
(
名簿
LEFT JOIN 職業 ON 名簿.職業ID = 職業.職業ID
)
LEFT JOIN 都道府県 ON 名簿.都道府県ID = 都道府県.都道府県ID

以降、JOINするテーブルが増えるたびに括弧で囲むことになります。
同社製品のSQL Serverとは違いますね。

[使用環境]
Access 2013