Hi taru,
you can do it with one statement:
Code:
update
test_c
set
test_c.key2 =
( select
key2
from test_b
where
test_b.f1 = ( select c2 from test_a where c1 = 'a' and key1 = test_c.key1 )
and test_b.f2 = ( select c2 from test_a where c1 = 'b' and key1 = test_c.key1 )
and test_b.f3 = ( select c2 from test_a where c1 = 'c' and key1 = test_c.key1 ) )
Test:
Code:
db2 =>select * from test_a@
C1 C2 KEY1
-- -- ----
a 1 X
b 2 X
c 3 X
a 4 P
b 5 P
c 6 P
6 Satz/Sätze ausgewählt.
db2 =>select * from test_b@
F1 F2 F3 KEY2
-- -- -- ----
1 2 3 Y
4 5 6 Z
2 Satz/Sätze ausgewählt.
db2 =>select * from test_c@
KEY1 KEY2
---- ----
X ?
1 Satz/Sätze ausgewählt.
db2 =>update
db2 => test_c
db2 =>set
db2 => test_c.key2 =
db2 =>( select
db2 => key2
db2 => from test_b
db2 => where
db2 => test_b.f1 = ( select c2 from test_a where c1 = 'a' and key1 = test_c.key1 )
db2 => and test_b.f2 = ( select c2 from test_a where c1 = 'b' and key1 = test_c.key1 )
db2 => and test_b.f3 = ( select c2 from test_a where c1 = 'c' and key1 = test_c.key1 ) )
db2 =>@
DB20000I Der Befehl SQL wurde erfolgreich ausgeführt.
db2 =>commit@
DB20000I Der Befehl SQL wurde erfolgreich ausgeführt.
db2 =>select * from test_c@
KEY1 KEY2
---- ----
X Y
1 Satz/Sätze ausgewählt.