Estoy tratando de actualizar todos los registros en una tabla con los valores encontrados en otra tabla.Access DB update one table with value from another
He intentado muchas versiones de la misma consulta básica y siempre sale el mismo mensaje de error:
operación debe usar una consulta actualizable .
¿Alguna idea de por qué esta consulta no funcionará en Access DB?
UPDATE inventoryDetails as idet
SET idet.itemDesc =
(
SELECT bomItemDesc
FROM BOM_TEMPLATES as bt
WHERE bt.bomModelNumber = idet.modelNumber
)
También probamos esto porque me di cuenta de que, desde la segunda tabla tiene varios registros del número de modelo para cada ModelNumber - y sólo necesita la primera descripción del primer registro encontrado para cada número de modelo.
UPDATE inventoryDetails as idet
SET idet.item_desc =
(
SELECT TOP 1 bomItemDescription
FROM BOM_TEMPLATES as bt
WHERE bt.bomModelNumber = idet.modelNumber
)
... sigue recibiendo el mismo error.
Las uniones son siempre mejores como punto de partida que una subconsulta en Access/Jet porque están mejor optimizadas (aunque muchas subconsultas están bien optimizadas, pero no todos los tipos de ellas). –
El mensaje de error, "La operación debe usar una consulta actualizable" puede sonar un poco extraño; Quiero decir, la (sub) consulta no es la parte que se está actualizando, ¿verdad? Lo que necesita comprender es que en Access-speak todos los SQL DML se denominan 'consultas', p. se obtiene gente que dice oxímoron aparente, como "una consulta de actualización" cuando se refieren a una declaración SQL * de actualización *. – onedaywhen
... y esas personas no son realmente culpables: la documentación de Access fomenta esto mediante el uso de dicha terminología a lo largo de, por ejemplo, 'apend query' significa INSERT INTO * statement *. – onedaywhen