Guten Tag,
folgendes Problem: ich möchte mittels update und select aus einer Tabelle Daten in eine andere überführen.
Tabelle A und B sind strukturgleich. Die Felder 1 und 2 sind in beiden Tabellen die Primärschlüssel. In Tabelle B stehen Informationen in Feld 3, die ich in das entsprechende Feld in Tabelle A überspielen möchte.
update Tabelle-A set Feld-A3 = (select Feld-B3 from Tabelle-B where (Tabelle-A.Feld-A1,Tabelle-A.Feld-A2) = (Tabelle-B.Feld-B1, Tabelle-B.Feld-B2));
Diese Anweisung läuft ohne Fehlermeldung durch, aber es paasiert nichts: das Feld 3 in Tabelle A enthält immer noch lauter NULLen.
Wenn ich die select-Anweisung herausschäle:
select Feld-B3 from Tabelle-B where (Tabelle-A.Feld-A1,Tabelle-A.Feld-A2) = (Tabelle-B.Feld-B1, Tabelle-B.Feld-B2)
dann kommt die Fehlermeldung
FEHLER: fehlender Eintrag in FROM-Klausel für Tabelle …
Diese Fehlermeldung habe ich in diesem Forum schon mal gefunden:
http://www.pg-forum.de/sql/2648-update-mit-dem-ergebnis-eines-subselects.html
Leider bin ich mit den Atworten dort nicht klargekommen. Eine kleine Recherche im Internet ergab als Hinweis:
“Dieser Fehler tritt auf wenn die Einstellung “Freitextfeld” vom Administrator noch nicht gesetzt ist. Durch einen Fehler in der Version 1.1.16 wird beim Anlegen eines Gastes ein ungültiges SQL generiert. Zur Behebung dieses Fehlers wählen Sie als Administrator unter Einstellungen bitte ein gültiges “Freitextfeld” aus”
Leider kann ich auch mit diesem Hinweis nichts anfangen.
Ich arbeite in meiner Datenbank mit root-Rechten und Postgresql 8.1.5. Was mich an der Sache so fuchsig macht, ist, dass ich früher schon mal solche updates gemacht habe. Letztlich habe ich meine alten Skripte genommen, die ich stets aufhebe und nur Tabellen- und Spaltennamen geändert. Ich verstehe nicht, warum es diesmal nicht klappt und wäre für Hinweise dankbar.
Eremit