table1 と table2 の 2 つのテーブルがあります。両方のテーブルの現在の状態は次のとおりです。
表1:
id type mon tue wed thu fri sat sun
1 ets NULL NULL NULL NULL NULL NULL NULL
1 ets NULL NULL NULL NULL NULL NULL NULL
1 eta NULL NULL NULL NULL NULL NULL NULL
1 eta NULL NULL NULL NULL NULL NULL NULL
1 cl NULL NULL NULL NULL NULL NULL NULL
1 cl NULL NULL NULL NULL NULL NULL NULL
2 ets NULL NULL NULL NULL NULL NULL NULL
2 ets NULL NULL NULL NULL NULL NULL NULL
2 eta NULL NULL NULL NULL NULL NULL NULL
2 eta NULL NULL NULL NULL NULL NULL NULL
2 cl NULL NULL NULL NULL NULL NULL NULL
2 cl NULL NULL NULL NULL NULL NULL NULL
テーブル 2:
id ets eta cl
1 mon tue wed
1 thu fri sat
1 sun mon tue
2 sat sun mon
2 fri sat sun
table2 の列の名前は、table1 の列 'type' であることに注意してください。table1.id が table2.id と一致するように、列 mon-sun が table2 で見つかったそれぞれの「タイプ」 (ets、eta、または cl) のすべての値を更新するように、table1 を更新したいと考えています。
私が望む結果のテーブルは、上記のデータに対して以下のようになります。
id type mon tue wed thu fri sat sun
1 ets 1 NULL NULL 1 NULL NULL 1
1 ets 1 NULL NULL 1 NULL NULL 1
1 eta 1 1 NULL NULL 1 NULL NULL
1 eta 1 1 NULL NULL 1 NULL NULL
1 cl NULL 1 1 NULL NULL 1 NULL
1 cl NULL 1 1 NULL NULL 1 NULL
2 ets NULL NULL NULL NULL 1 1 NULL
2 ets NULL NULL NULL NULL 1 1 NULL
2 eta NULL NULL NULL NULL NULL 1 1
2 eta NULL NULL NULL NULL NULL 1 1
2 cl 1 NULL NULL NULL NULL NULL 1
2 cl 1 NULL NULL NULL NULL NULL 1
私が適用している UPDATE クエリは次のとおりです。
update a
set a.mon = case b.ets when 'mon' then '1' else '0' end,
a.tue = case b.ets when 'tue' then '1' else '0' end,
a.wed = case b.ets when 'wed' then '1' else '0' end,
a.thu = case b.ets when 'thu' then '1' else '0' end,
a.fri = case b.ets when 'fri' then '1' else '0' end,
a.sat = case b.ets when 'sat' then '1' else '0' end,
a.sun = case b.ets when 'sun' then '1' else '0' end
from table1 a, table2 b
where a.id = b.id and a.type = 'ets'
最初に、id と一致する table2 の ets のテーブルtable1.type = 'ets'
とそれぞれの値を同時に更新することを検討してください。
上記のクエリは、table2 から最初に一致する値のみを取得し、table1 でそれを更新し、残りは更新しません。
どんな助けでも大歓迎です。