私が現在取り組んでいるプロジェクトでは、システムは従業員のタイムテーブルを次の構造のテーブルに保存します。
employee_id | mon_h_s | mon_m_s | mon_h_e | mon_s_e | tue_h_s | tue_m_s | etc.
------------------------------------------------------------------------------
1 06 00 14 30 06 00 ...
2 18 30 07 00 21 00 ...
どこ:
mon_h_s
- 月曜日の開始時間
mon_m_s
- 月曜日の議事録開始
mon_h_e
- 月曜日の終了時間
mon_m_e
- 月曜日の議事録終了
tue_...
- 火曜日...
曜日ごとに 4 つのフィールドがあります: 時間開始、分開始、時間終了、分終了です。
したがって、上の表から次のことがわかります。
ID 1の従業員は、月曜日の06:00から14:30まで勤務します
ID 2の従業員は、月曜日の18:30から07:00まで(基本的に、月曜日から火曜日までの間、夜間) 勤務します。
問題は、時間の重複 (夜間) を含むすべてを考慮した SQL クエリを作成する方法がわからないことです。たとえば、火曜日の午前 6 時 (06:00) に勤務する従業員を検索する必要があります。この場合、両方の従業員 (id 1 と id 2) がこの基準を満たします。ID 1 の従業員は火曜日の 06:00 に勤務を開始し、ID 2 の従業員は火曜日の 07:00 まで勤務します (月曜日に開始します)。
この問題を解決する方法についての提案は大歓迎です。