あるテーブルのすべてのレコードを別のテーブルの値で更新しようとしています。アクセスDBが別のテーブルから値を持つテーブルを更新する
私は同じ基本的なクエリの多くのバージョンを試してみましたが、常に同じエラーメッセージが出てきました:
操作は、更新可能 クエリを使用する必要があります。
このクエリがAccess DBで機能しない理由についてのご意見はありますか?私は第二のテーブルので、各modelnumberための複数のモデル番号のレコードを持っていることに気づいたので
UPDATE inventoryDetails as idet
SET idet.itemDesc =
(
SELECT bomItemDesc
FROM BOM_TEMPLATES as bt
WHERE bt.bomModelNumber = idet.modelNumber
)
もこの試み - と私は各モデル番号の最初に見つかったレコードから最初の説明を必要としています。
UPDATE inventoryDetails as idet
SET idet.item_desc =
(
SELECT TOP 1 bomItemDescription
FROM BOM_TEMPLATES as bt
WHERE bt.bomModelNumber = idet.modelNumber
)
...でも同じエラーが発生します。
ジョインはAccess/Jetのサブクエリよりも常に優れています(多くのサブクエリは最適化されていますが、すべてのタイプではありません)。 –
"操作で更新可能なクエリを使用する必要があります"というエラーメッセージは、少し奇妙に聞こえるかもしれません。つまり、(サブ)クエリは更新されている部分ではありません。あなたが理解する必要があるのは、Access-speakですべてのSQL DMLが「クエリ」と呼ばれていることです。あなたは更新SQL *文*を参照しているときに '更新クエリ'のような見た目の擬態語を言っている人を得ます。 – onedaywhen
...そのような人々は本当に間違っているわけではありません。アクセス文書は、このような用語を使用することによってこれを奨励しています。 'INSERT INTO * statement *'を意味する 'append query'。 – onedaywhen