さて、私はあなたのデータベース構造を作ろうとします。
私が最善だと思うのは、1日をタイムブロックで分割することです。たとえば、00:00〜01:00、01:00〜02:00などです。これらをテーブルに配置します。
ID | day | timestart | timeend
1 | Monday | 00:00 | 01:00
2 | Monday | 01:00 | 02:00
.....................
もちろんIDを除いて、すべての列は純粋に何を参照しているのかがわかるようになっていることに注意してください。
次に、ユーザーテーブルがあります
ID | username | email | ...
1 | John | john@example.com | ...
.....................
次に、別のテーブル、time_offまたはsthがあります
user_ID | timeblock_ID
1 | 2
1 | 8
...............
他のテーブルを参照するために、user_IDとtimeblock_IDの両方に外部キーを配置します
次に、次の方法でこれを照会できます。
SELECT GROUP_CONCAT(timeblock_ID SEPARATOR ',') AS timeblocks FROM time_off WHERE user_ID=$id
結果を使用して、すべてのユーザーに同じ時間をオフにします。
SELECT
users.ID, users.username
FROM time_off
LEFT JOIN users ON users.ID=time_off.user_ID
WHERE
time_off.timeblock_ID IN($timeblocks)
GROUP BY users.ID
それほど難しいことではありませんか?実装はあなた次第です。