![]() |
Datenbank: Access • Zugriff über: ADO/SQL
SQL: Update aus zweiter Liste
Hallo an alle.
Ich hab momentan ein Problem beim Zusammenstellen einer Tabelle. Zwei Listen liegen vor, Access und Operator. Ich möchte nun die Datensätze in Access um die Operatoreinträge erweitern. Mit der Join-Anweisung kann ich über eine Buffertabelle die Liste erstellen, ich hätte aber gerne nur die Tabelle Access upgedated, ohne eine Buffertabelle zu benutzen.
SQL-Code:
Mein Problem besteht darin, dass ich nicht (mehr) raffe, wie (ob) ich eine Join- in eine Updateanweisung umbauen kann.
SELECT
a.Index, a.MachineID, a.MachineName, a.OperatorID, o.OperatorName, o.OperatorSurname, o.OperatorDesc, a.LoginTime, a.LogoutTime, a.AccessLevel, a.Equipment_ID FROM Access a, Operator o WHERE a.OperatorID = o.OperatorID Hab mittlerweile schon recht viel durchgelesen, aber alle Funde wollten entweder Festwerte, oder Parameter, für die ich dann auch wieder buffern müsste. Momentan nimmt mit zunehmender Lektüre nur noch der grad meiner Verwirrung zu. :gruebel: Wäre schön wenn mir jemand helfen könnte. |
Re: SQL: Update aus zweiter Liste
Wenn ich das noch richtig im Kopf habe, könnte das so gehen:
SQL-Code:
Inwieweit das allerdings performant ist, vermag ich nicht zu sagen.
UPDATE Access SET OperatorName =
SELECT OperatorName FROM Operator WHERE Operator.Operator.ID = Access.OperatorID, OperatorSurname = SELECT OperatorSurname FROM Operator WHERE Operator.Operator.ID = Access.OperatorID, ... |
Re: SQL: Update aus zweiter Liste
SQL-Code:
UPDATE access
SET OperatorName = o.OperatorName, OperatorSurname = o.OperatorSurname, OperatorDesc = o.OperatorDesc FROM access a LEFT JOIN operator o ON a.OperatorID = o.OperatorID |
Re: SQL: Update aus zweiter Liste
Vielen Dank mal für die Antworten.
Leider kommt bei beiden Versionen noch ein Syntaxfehler. Habe jetzt noch eine ![]() die Unterschiede zwischen MS-SQL und Access beim Verwenden von JOINs beim UPDATE beschreibt. Wenn ich das nun alles richtig verstanden habe, funktioniert mein Vorhaben mit Access gar nicht: Zitat:
SQL-Code:
Beide bringen zwei Fehler nacheinander:Nummer 1: UPDATE Access AS a, Operator AS o SET a.OperatorName = o.OperatorName, a.OperatorSurname = o.OperatorSurname, a.OperatorDesc = o.OperatorDesc WHERE a.OperatorID = o.OperatorID Nummer 2: UPDATE Access AS a LEFT JOIN Operator AS o ON a.OperatorID = o.OperatorID SET a.OperatorName = o.OperatorName, a.OperatorSurname = o.OperatorSurname, a.OperatorDesc = o.OperatorDesc EOleException: Der aktuelle Provider unterstützt nicht die Wiedergabe mehrfacher Recordsets bei einer einzelnen Ausführung. EDatabaseError: ADOQueryAccess: CommandText gibt keine Ergebnismenge zurück. Edit: Das Problem ist gelöst: Unter Verwendung von Nummer 2 und einem ADOQueryAccess.ExecSQL statt ADOQueryAccess.Open tuts nun. Tja, das kommt eben davon wenn man Access verwendet :stupid: Vielen Dank nochmal an euch. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz