Ich versuche, alle Datensätze in einer Tabelle mit den Werten in einer anderen Tabelle zu aktualisieren.Access DB Update eine Tabelle mit Wert von einem anderen
Ich habe viele Versionen der gleichen grundlegenden Abfrage versucht und erhalten immer die gleiche Fehlermeldung:
Operation muss eine aktualisierbare Abfrage verwenden.
Haben Sie irgendwelche Gedanken darüber, warum diese Abfrage in Access DB nicht funktioniert?
UPDATE inventoryDetails as idet
SET idet.itemDesc =
(
SELECT bomItemDesc
FROM BOM_TEMPLATES as bt
WHERE bt.bomModelNumber = idet.modelNumber
)
versuchte auch, weil ich erkennen, dass da die zweite Tabelle mehrere Modellnummern Datensätze für jede Modellnummer hat - und ich die erste Beschreibung aus dem ersten Datensatz für jede Modellnummer gefunden nur brauchen.
UPDATE inventoryDetails as idet
SET idet.item_desc =
(
SELECT TOP 1 bomItemDescription
FROM BOM_TEMPLATES as bt
WHERE bt.bomModelNumber = idet.modelNumber
)
... immer noch den gleichen Fehler bekommen.
Joins sind immer besser als Ausgangspunkt für eine Unterabfrage in Access/Jet, weil sie besser optimiert sind (obwohl viele Unterabfragen gut optimiert sind - nur nicht alle Arten von ihnen). –
Die Fehlermeldung "Operation muss eine aktualisierbare Abfrage verwenden" klingt etwas seltsam. Ich meine, die (Sub-) Abfrage ist nicht der Teil, der gerade aktualisiert wird, oder? Was Sie verstehen müssen, ist, dass in Zugriffssprache alle SQL-DML als eine "Abfrage" bezeichnet wird, z. Sie bekommen Leute, die scheinbar Oxymoron sagen, wie zum Beispiel eine 'update query', wenn sie sich auf eine update SQL * -Anweisung * beziehen. – onedaywhen
... und solche Leute sind nicht wirklich schuld: Die Access-Dokumentation fördert dies, indem sie eine solche Terminologie z. "Anfrage anhängen" bedeutet INSERT INTO * -Anweisung *. – onedaywhen