いさむの泡沫備忘録

泡沫(うたかた)のように消えてしまう記憶を、備忘録として残していきます。

Accessで複数テーブルを条件にして更新するSQLの書き方

Accessでクエリを作成していたらハマってしまった・・・。

 

複数テーブルを条件に更新しようとしたらエラーになりました。

 

AccessSQLビューから更新クエリを作成していましたが、

 構文エラー:演算子がありません。

 

 

下記SQLはPostgresSQLだと上手くいくのに、Accessは受け付けてくれません。

なんでだよー!(T_T)

 

Access 2013だと失敗な例

UPDATE hoge
SET
  Name = piyo.Name
FROM
  hoge
  INNER JOIN fuga 
    ON hoge.No = fuga.No 
  INNER JOIN piyo 
    ON fuga.No = piyo.No
WHERE
  fuga.Flg = 1;

 

どうやら()を付けないといけないみたいですが、

付ける場所を間違えると失敗するのでややこしい。。。

 

成功例は

UPDATE ( 
  hoge 
    INNER JOIN fuga
      ON hoge.No = fuga.No
)
  INNER JOIN piyo
    ON fuga.No = piyo.No
SET
  hoge.Name = piyo.Name
WHERE
  fuga.Flg = 1;

 

これでようやくNameの更新ができましたとさ。

 

 

ちなみに、Access成功例はPostgresSQLでやってみると失敗しました。

 

・・・わかるかーーーっ!!