I have 3 tables, BaseTable, Test1Table and Test2Table
x
BaseTable
|TestID|Status|
|TP1 |NULL|
|TP2 |NULL|
|TP3 |NULL|
Test1Table
|TestID|T1_Status|
|TP1 |1|
|TP2 |0|
|TP3 |1|
Test2Table
|TestID|T2_Status|
|TP1 |1|
|TP2 |0|
|TP3 |1|
This is what the output should be:
If Both Test1Table.T1_Status =1 and Test2Table.T2_Status =1
Update BaseTable.Status to 2
Else
Update BaseTable.Status to 1
So for the above data set: Base Table should be
|TestID|Status|
|TP1 |2|
|TP2 |1|
|TP3 |2|
Advertisement
Answer
One method uses case
and exists
:
update basetable
set status = (case when exists (select 1 from Test1Table t1 where t1.testId = basetable.testid and t1.status = 1) and
exists (select 1 from Test2Table t2 where t2.testId = basetable.testid and t2.status = 1)
then 2 else 1
end);