Я пытаюсь обновить все записи в одной таблице со значениями, найденными в другой таблице.Access DB обновляет одну таблицу со значением от другого
Я пробовал много версий одного и того же основного запроса и всегда получаю то же сообщение об ошибке:
операции должен использоваться обновляемый запрос .
Любые мысли о том, почему этот запрос не будет работать в Access DB?
UPDATE inventoryDetails as idet
SET idet.itemDesc =
(
SELECT bomItemDesc
FROM BOM_TEMPLATES as bt
WHERE bt.bomModelNumber = idet.modelNumber
)
также попытался это, потому что я понял, что, поскольку вторая таблица имеет несколько записей номер модели для каждого 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
... и такие люди на самом деле не виноваты: документация Access поощряет это, используя такую терминологию на всей территории, например. 'append query' означает выражение INSERT INTO * *. – onedaywhen