Oracle Update mit Werten aus anderer Tabelle

Sabine_81

Grünschnabel
Hallo zusammen,

folgendes:
ich habe zweit tabellen:

tab1 mit id, feld1, feld2
tab2 mit id feld3 und feld4

tab1.id und tab2.id sind dabei jeweils identisch und eindeutig
nun soll in das feld1 der tab1 der wert aus feld3 der tab2

dazu habe ich folgendes statment gedacht:
Update tab1 set feld1 =
(select feld3 from tab2 where tab1.id = tab2.id)

oracle bringt mir aber den fehler, das die unterabfrage mehr zeilen zurückgeben würde.
ich verstehs nicht so ganz?

kann mir jemand helfen?

lg
sabs
 

dbwizard

Erfahrenes Mitglied
Update tab1 set feld1 =
(select feld3 from tab2 where tab1.id = tab2.id)

oracle bringt mir aber den fehler, das die unterabfrage mehr zeilen zurückgeben würde.
ich verstehs nicht so ganz?

kann mir jemand helfen?

lg
sabs


Hallo,

Die Beziehung tab1.id = tab2.id scheint eine 1:n Bezeihung z sein, d.h. dein Select
select feld3 from tab2 where tab1.id = tab2.id gibt mehr als 1 Zeile zurück, welche du natürlich nicht in 1 Zeile der Parent Tabelle (Tab1) updaten kannst)



Gruss
 

Sabine_81

Grünschnabel
ohje... vielen Dank... :eek:

hab da ne einschränkung vergessen. denn in tab2 kann die id tatsächlich mehrfach vorkommen, dann ist aber das feld3 leer. so

Code:
Update tab1 set feld1 = 
(select feld3 from tab2 where tab1.id = tab2.id
and feld3 is not null)

funktionierts...

danke fürs vom schlauch schupsen :-D