2017-11-07 1 views
0

Ich versuche, den color Feldwert aus der dress Tabelle in die purchase Tabelle zu übertragen, da ich die Struktur meiner DB leicht ändere.Zugriff 2016 - Einfache Aktualisierungsabfrage gibt "Operation muss eine aktualisierbare Abfrage verwenden" Fehler

Hier ist die Abfrage, es ist einfach genug, aber ich bekomme immer den Fehler.

UPDATE purchase 
SET purchase.color = (SELECT dress.color 
         FROM dress INNER JOIN purchase 
         ON dress.ID = purchase.dressID); 

Ich habe auch ohne JOIN und setzte die Bedingung in der WHERE-Klausel versucht, aber ich habe den gleichen Fehler.

UPDATE purchase 
SET purchase.color = (SELECT dress.color 
         FROM dress, purchase 
         WHERE dress.ID = purchase.dressID); 

Ich habe auch gelesen, dass dieser Fehler manchmal aufgrund der Datei „nur lesen“ oder andere Probleme mit der Erlaubnis zu sein, ist, habe ich versucht, alles, aber nichts scheint zu funktionieren.

Error I'm getting

Edit: auch dies versucht, aber ich bekommen "fehlender Operator" Fehler

UPDATE purchase 
SET purchase.color = dress.color 
FROM dress INNER JOIN purchase ON dress.ID = purchase.dressID; 
+2

Mögliche Duplikat [SQL-Update woes in MS Access - Betrieb muss eine aktualisierbare Abfrage verwenden] (https://stackoverflow.com/questions/537161/sql-update-woes-in-ms-access-operation-must-use-an-updateable-query) –

+0

Vielen Dank du, ich habe gestöbert durch einige Threads, aber dieser hatte die Antwort, eine wirklich seltsame dabei. Ich werde mit einer Antwort unten bearbeiten. Danke noch einmal! – Daniel

Antwort

0

Ich fand eine Antwort dank der Verbindung von Ken Weiß.

Diese Abfrage mit dem seltsamen Schlüsselwort 'DISTINCTROW' behob das Problem.

UPDATE DISTINCTROW purchase 
INNER JOIN dress ON purchase.dressID = dress.ID 
SET purchase.color = dress.color; 
+0

Haben Sie diese Abfrage ohne DISTINCTROW versucht? Weil die JOIN-Syntax in Ihrer Frage (3. Versuch) falsch war - es muss "UPDATE x JOIN und SET x ..." sein, nicht "UPDATE x SET x ... VON x JOIN y" – Andre

1

Ich glaube, Sie wirklich eine einfache, korrelierte Unterabfrage wollen:

UPDATE purchase 
    SET color = (SELECT d.color 
       FROM dress as d 
       WHERE d.ID = purchase.dressID 
       ); 

Wenn es möglicherweise Duplikate in der Unterabfrage sein, versuchen TOP 1:

UPDATE purchase 
    SET color = (SELECT TOP 1 d.color 
       FROM dress as d 
       WHERE d.ID = purchase.dressID 
       ); 
+0

Hallo, danke für die Antwort aber ich habe das Problem tatsächlich behoben, wenn Sie neugierig sind, wie Sie meine Antwort oben überprüfen. – Daniel

+0

@Daniel. . . Ihre angebliche Lösung tut nicht, was Sie erwarten. Ich würde vorschlagen, dass Sie die Versionen in dieser Antwort verwenden. –

Verwandte Themen