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


Anmelden zum Antworten