Update-Anweisung mit Unterabfrage
MS Access Update-Anweisung mit Unterabfrage
Ich habe Um ein Tisch und OrderDetails-Tabelle. OrderDetails-Tabelle orderline Artikel mit der Menge und Zwischensumme. Ich möchte eine Abfrage ausführen, um das update "Gesamtbetrag Vor Rabatt", Um die Tabelle mit der Summe Wert der Korrespondent orderline Zwischensummen.
Die Abfrage, die ich jetzt haben, ist unten. Ich konnte nicht führen Sie es in Access. Es sagt mir, "Sie haben geschrieben eine Unterabfrage zurückgeben kann mehr als ein Feld ohne Verwendung der VORHANDEN ist reserviertes Wort in der main Abfragen FROM-Klausel. überarbeiten Sie die SELECT-Anweisung der Unterabfrage auf Antrag nur ein Feld."
UPDATE [Order] INNER JOIN OrderDetails ON Order.ID = OrderDetails.[Order ID]
SET [Order].[Total Amount Before Discount] =
(SELECT Order.ID, Sum(OrderDetails.[Subtotal After Discount]) AS [SumOfSubtotal After Discount]
FROM [Order] INNER JOIN OrderDetails ON Order.ID = OrderDetails.[Order ID]
GROUP BY Order.ID)
WHERE (((Order.ID)=[OrderDetails].[Order ID]));
InformationsquelleAutor Peter | 2013-10-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die DSum-Funktion in Ihrem
UPDATE
Abfrage.Hinweis: wenn Sie den Datentyp des
[Order ID]
wird text anstelle von numerischen, fügen Sie Anführungszeichen um den Wert, den Sie liefern in derDSum
Ausdruck ...In diesem Fall, ich bezweifle es. Sie können hören oft wiederholte Behauptungen, dass
DSum
ist langsamer. Das sollte nicht hier der Fall sein. Mit einem index aufOrderDetails.[Order ID]
entweder Weg, sollte einigermaßen schnell.InformationsquelleAutor HansUp
Ich glaube nicht, dass Sie brauchen, die mitmachen. Wie etwa die folgenden:
Obige Abfrage wird aktualisiert Gesamtbetrag Vor Rabatt für jeden Datensatz in der Um Tabelle. Wenn Sie aktualisieren möchten einfach nur eine gewisse Auftrags-Id dann verwenden Sie die folgenden:
InformationsquelleAutor Linger
Paar Beobachtungen, UPDATE muss neu geschrieben werden:
Re-schreiben Sie Ihre Anfrage, die wir erhalten - wenn Sie die Aktualisierung nur einen Datensatz, Sie kümmern sich nicht um die GRUPPE VON:
Erste Sache, die Sie nicht AKTUALISIEREN können JOIN/INNER JOIN..
Sekunde, die Sie nicht aktualisieren können mehr als eine Spalte den Weg, Sie schrieb die Aussage, es muss so etwas wie:
Hoffe, das macht Sinn.
if you are updating only one record, you don't care about the GROUP BY
. Dann die SQL unten nicht begrenzt die Abfrage auf one aufnehmen. Nicht zu vergessen, die Anweisung ist ungültig. Sie vermissen ein)
und Um ist ein reserviertes Wort und muss in Klammern stehen.BESTELLUNG ist reserviertes Wort ist. Jedoch, Access und SQL erlauben, wenn Sie mit den eckigen Klammern [UM] ist gültig für der name der Tabelle in Access.
Sie sind jedoch berechtigt, Ihnen fehlen die Klammern um ein paar vorkommen
Vereinbart und Aktualisiert.
InformationsquelleAutor Leptonator