もむん blog

普通の会社員です。趣味の海外ドラマ、ガジェットを中心に、気楽に書きます。

AccessのSQL文でJOINを複数テーブルする方法

こんにちは。

 

今回は、AccessSQL文でJOINを複数テーブルする方法を記載したいと思います。

 

何故これを、取り上げるかというかと、AccessSQL文でJOINの複数テーブルをOracleSqlServer感覚で記述すると、エラーで実施できません。

かなり、僕はハマってしまいました。SQL文が合っているのに何故エラーが出るのか分からなかった。

この解決方法を記載します。

 

以下の表をAccessSQL文で結合する。

f:id:c5dt0w25:20190302230225p:plain

 

エラーが出るSQL

SELECT ID, T_部署.名称, T_役職.名称 FROM T_社員名簿
LEFT JOIN T_部署 ON 社員名簿.部署No = T_部署.No
LEFT JOIN T_役職 ON 社員名簿.部署No = T_役職.No;

 

上記の文をAccessで、記述すると、「演算子がありません。」と訳の分からんエラーが出ます(笑)。

 

エラーが出ないSQL

回避するには、以下のように()をつけて記載します。

 

SELECT ID, T_部署.名称, T_役職.名称 FROM (T_社員名簿
LEFT JOIN T_部署 ON 社員名簿.部署No = T_部署.No)
LEFT JOIN T_役職 ON 社員名簿.部署No = T_役職.No;

 

これは、AccessSQL文では、3つ以上のテーブルの結合ができないため、()をつけて2つのテーブル結合に偽装して解決しているそうです。

 

こんな、小手先で解決できるのかあ。