Update table mit Join

Hallo zusammen,
ich möchte eine Spalte aufgrund von mehreren Bedingungen ändern. Nach Ausführung des SQL erhalten ich den Fehler, SQL nicht korrekt ausgeführt. Was läuft denn falsch?? Ich bin im OracleSQL und möchte im SQL Navigator den Befehl absetzen.
UPDATE TABLE(
SELECT
Tab1.spalte1,
Tab2.spalte2,
Tab3.spalte3
FROM
Tab1,
Tab2,
Tab3
WHERE Tab1.spalte4= ‚13‘
AND Tab1.spalte1= Tab2.spalte2
AND Tab2.spalte2=Tab3.spalte3
) Tab1 SET Tab1.Spalte4 = ‚18‘
im voraus Danke für die Mithilfe!

Auch hallo.

Ich bin im
OracleSQL und möchte im SQL Navigator den Befehl absetzen.
UPDATE TABLE(
SELECT
Tab1.spalte1,
Tab2.spalte2,
Tab3.spalte3
FROM
Tab1,
Tab2,
Tab3
WHERE Tab1.spalte4= ‚13‘
AND Tab1.spalte1= Tab2.spalte2
AND Tab2.spalte2=Tab3.spalte3
) Tab1 SET Tab1.Spalte4 = ‚18‘

Mal naiv (also aktuell ohne Oracle DB Zugriff im Hintergund) gefragt: wieso spalte4 ? Müsste es nicht eine andere Zahl sein ?

HTH
mfg M.L.

***Resourcen f. PL/SQL***
www.plsql.de
www.oracleplsqlprogramming.com

Hallo,
natürlich bin ich zu Oracle verbunden. Die spalte 4 ist ok. Es kann natürlich jede beliebige Spalte sein. In den genannte Resourcen war ich schon auf Suche, leider ergebnislos. Hast du eine Idee??

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Rainer,

geht denn das überhaupt, ein Update auf einen SUBSELECT?

Es handelt sich schliesslich nicht um eine echte Tabelle, sondern nur um so etwas wie einen Cursor, der ggf. übergeordneten Konstrukten (Abfragen …) seine (READ-ONLY-)Records liefert.

Fragende Gruesse
bernhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Rainer,

UPDATE TABLE(
SELECT
Tab1.spalte1,
Tab2.spalte2,
Tab3.spalte3
FROM
Tab1,
Tab2,
Tab3
WHERE Tab1.spalte4= ‚13‘
AND Tab1.spalte1= Tab2.spalte2
AND Tab2.spalte2=Tab3.spalte3
) Tab1 SET Tab1.Spalte4 = ‚18‘

was du hier machen willst geht (glaube ich) nur mit nested tables, und da müsstest du im SELECT genau eine Spalte haben. Wenn ich richtig verstanden habe, was du vorhast, dann sollte dieser UPDATE hier richtig sein:

UPDATE tab1 t1 SET spalte4 = 18
WHERE t1.spalte4 = 13 AND EXISTS (
 SELECT \* FROM tab2 t2, tab3 t3
 WHERE t1.spalte1=t2.spalte2 AND
 t2.spalte2=t3.spalte3);

Gruß
Martin