Sto tentando di aggiornare tutti i record in una tabella con i valori trovati in un'altra tabella.Access DB aggiorna una tabella con valore da un'altra
Ho provato molte versioni della stessa query di base e sempre ottengo lo stesso messaggio di errore:
operazione è necessaria una aggiornabile query.
Qualche idea sul motivo per cui questa query non funzionerà in Access DB?
UPDATE inventoryDetails as idet
SET idet.itemDesc =
(
SELECT bomItemDesc
FROM BOM_TEMPLATES as bt
WHERE bt.bomModelNumber = idet.modelNumber
)
provato anche questo, perché mi sono reso conto che a partire dalla seconda tabella ha più record numero di modello per ogni ModelNumber - e ho solo bisogno la prima descrizione del primo record trovato per ciascun numero di modello.
UPDATE inventoryDetails as idet
SET idet.item_desc =
(
SELECT TOP 1 bomItemDescription
FROM BOM_TEMPLATES as bt
WHERE bt.bomModelNumber = idet.modelNumber
)
... continua a ottenere lo stesso errore.
I join sono sempre migliori come punto di partenza di una sottoquery in Access/Jet perché sono ottimizzati meglio (sebbene molte sottoquery siano ottimizzate ottimamente - non solo tutti i tipi di esse). –
Il messaggio di errore, "L'operazione deve utilizzare una query aggiornabile" può sembrare un po 'strano; Voglio dire, la (sotto) query non è la parte che viene aggiornata, giusto? Quello che devi capire è che in Access-speak tutto il DML SQL viene definito come una "query", ad es. fai in modo che le persone dicano "ossimoro" come "una query di aggiornamento" quando si riferiscono a un aggiornamento dell'istruzione SQL * *. – onedaywhen
... e questo genere di cose non è realmente colpa: la documentazione di Access lo incoraggia usando questa terminologia per es. 'aggiungi query' per indicare INSERT INTO * statement *. – onedaywhen