現在Servlet/JSP、MariaDB(MySQLの文法で動きます)で予約機能のあるサイトを作っています。
DBで以下の操作をしたいのですが、UPDATE文が3つに別れています。
1つの文で書くことは可能でしょうか?
◆やりたいこと
営業状況と予約状況を管理するテーブル「schedule」と、祝日や臨時休業の日時を登録するテーブル「yasumi」があり、
毎週月曜日とテーブル「yasumi」にある日付をテーブル「schedule」では休業日の扱いにしたい。
※テーブル「schedule」のeigyouカラムが1のとき休業
↓
◆各テーブルとカラムの内容
テーブル「schedule」:営業状況と予約状況を登録
dateカラム:日付
dowカラム:dayofweek(date
) 曜日の取得 dow=2のとき休業日(eigyou=1)にしたい
eigyouカラム:0(デフォルト)のとき営業、1のとき休業
テーブル「yasumi」祝日や臨時休業の日時を登録
dateカラム:休業日 テーブル「schedule」のdateと連動
contentカラム:休みの内訳(臨時休業など)
◆現在使用しているSQL文
【SQL1】dowの値によってyoubiの値を更新する
SQL
1UPDATE `test`.`schedule` SET youbi = 2(CASE dow 3 WHEN 1 THEN '(日)' 4 WHEN 2 THEN '(月)' 5 WHEN 3 THEN '(火)' 6 WHEN 4 THEN '(水)' 7 WHEN 5 THEN '(木)' 8 WHEN 6 THEN '(金)' 9 WHEN 7 THEN '(土)' 10 ELSE null 11END)
【SQL2】test
.yasumi
の日付がtest
.schedule
にある場合、test
.yasumi
のyoubiをtest
.schedule
のcontentの値に置き換え、eigyouの値を1にする
SQL
1UPDATE `test`.`schedule` t1, `test`.`yasumi` t2 2SET t1.youbi = t2.content, 3t1.eigyou = 1 4WHERE t1.date = t2.date
【SQL3】月曜日を休みにする
SQL
1UPDATE `test`.`schedule` t1 2SET t1.eigyou = 1 3WHERE t1.dow = 2
分かりづらい文章になってしまいましたが回答お待ちしております。
回答2件
あなたの回答
tips
プレビュー