Microsoft Access 掲示板

「クエリが複雑すぎます」を回避したい / 4

14 コメント
views
4 フォロー
4
りんご 2021/09/17 (金) 07:28:32 c564b@0e907

 ちょっと、複雑なので、フレックスと残業3は抜きに、方向性を考えてみました。

(1レコード目)休日1開始8:00、休日1終了10:00、休日2開始10:30、休日2終了12:00、

休日1開始休日1終了休日2開始休日2終了残業1開始残業1終了残業2開始残業2終了
8:0010:0010:3012:007:007:3013:0014:00
Is Not NullIs Not NullIs Not NullIs Not Null

︎休日1と残業1を仮テーブルに追加クエリその1(休日2と残業2は追加先を指定しない)を作る。
︎休日2と残業2を仮テーブルに追加クエリその2(休日1と残業1は追加先を指定しない)を作る。

(2レコード目)休日1開始19:00、休日1終了20:00

休日1開始休日1終了休日2開始休日2終了残業1開始残業1終了残業2開始残業2終了
19:0020:0018:3021:30
Is Not NullIs Not NullIs NullIs Null

休日1と残業1と残業2を仮テーブルに追加クエリその3を作る。

平日の場合:開始時間8:20(固定)、終了時間17:20(固定)、時間休開始14:00、時間休終了15:00

開始時間終了時間時間休開始時間休終了残業1開始残業1終了残業2開始残業2終了休日1開始休日1終了
8:2017:2014:0015:007:208:2017:2018:20
Is NullIs Null

開始、終了、時間休、残業を仮テーブルに追加クエリその4を作る。

仮テーブル
勤務開始勤務終了残業1開始残業1終了残業2開始残業2終了時間休開始時間休終了
8:0010:007:007:30
10:3012:0013:0014:00
19:0020:0018:3021:30
8:2017:207:208:2017:2018:2014:0015:00
選択クエリ
勤務開始勤務終了残業1開始残業1終了残業2開始残業2終了時間休開始時間休終了
8:0010:007:007:30
10:3012:0013:0014:00
19:0020:00 18:3021:30
8:2017:207:208:2017:20 18:2014:0015:00

︎残業1を新テーブルに追加クエリその5(残業1がIs Not Null)を作る。
︎残業2を新テーブルに追加クエリその6(残業2がIs Not Null)を作る。
︎残業1開始と勤務開始を新テーブルの勤務開始と勤務終了に追加クエリその7を作る。
(残業1開始がIs Not Null、残業1終了がIs Null)
︎勤務終了と残業2終了を新テーブルの勤務開始と勤務終了に追加クエリその8を作る。
(残業2開始がIs Null、残業2終了がIs Not Null)

︎勤務開始、勤務終了、時間休開始、時間休終了を新テーブルの勤務開始、勤務終了、中抜け開始、中抜け終了に追加クエリその9を作る。

新テーブル
勤務開始勤務終了中抜け開始中抜け終了
7:007:30
7:208:20
13:0014:00
17:2018:20
18:3019:00
20:0021:30
8:0010:00
10:3012:00
19:0020:00
8:2017:2014:0015:00

 最後は、クエリで見やすい順番に。

通報 ...
  • 12
    ひんやり 2021/09/17 (金) 15:02:43 8be4a@c8e67 >> 4

    追加クエリという手がありましたね。うっかりしていました。
    選択クエリとテーブル作成クエリで作ることばかりを考えていました
    中身の見直しと追加クエリで再挑戦してみます