Oracle - Updatefunktion macht nicht ganz was sie soll
-
Hi,
ich habe hier eine Oracle-9 DB und möchte ein Update über einen Join in einer der Tabellen durchführen dazu habe ich folgendes gestrickt:
UPDATE scott.doc SET scott.doc.doc_autor = 'abc' WHERE scott.doc.dir_id in ( select dir_id from scott.doc natural join scott.dir_cache where scott.doc.doc_autor = 'admin' and scott.dir_cache.fullname like 'c:\xyz%' )
Es soll also verglichen werden ob in der spalte "doc_autor" "admin" steht und ob es im verzeichnis ebenfalls stimmt.
Das update erfolgt sogar aber leider werden alle Einträge in der spalte überschreiben wenn das Verzeichnis stimmt, es wird also die "und"-verknüpfung nicht beachtet.
Tabellen sehen so aus:
doc (dir_id, doc_autor, doc_name)
dir_cache (dir_id, fullname)Weiß wer warum das so ist?
-
Was passiert, wenn Du den join auflöst?
UPDATE scott.doc SET scott.doc.doc_autor = 'abc' WHERE doc_autor = 'admin' AND scott.doc.dir_id in ( select dir_id from scott.dir_cache where scott.dir_cache.fullname like 'c:\xyz%' )
-
interessant es hat das gemacht was es sollte... ich versteh nur nicht wieso das dann mit dem join nicht geht, bzw. ich dachte bis jetzt immer das man joinen sollte