イベントのテーブルがあり、それぞれに開始日と終了日があります。
日のリストを表示し、各日に発生しているイベントを表示する必要があります。
たとえば、月~水を実行するイベントと、火~木を実行する別のイベントがあるとします。次のようなテーブルを作成しようとしています。
Mon: Event 1
Tue: Event 1, Event 2
Wed: Event 1, Event 2
Thu: Event 2
これを行う唯一の方法は、毎日クエリを実行するか、特定の日付範囲のすべてのイベントをロードし、それらが 1 日以上続く場合はコードで複製することです。どちらのアプローチもハッキリしているようで、何かが欠けていると確信しています。
これを行うためのよりきちんとした方法はありますか?
構造:
id INT
name VARCHAR
start_date DATE
end_date DATE
現在のクエリ (このデータベース構造は恐ろしいため、少し単純化されています):
SELECT *
FROM events
WHERE start_date <= $somedate
AND end_date >= $somedate
... $somedate は特定の日付です。(はい、コードで適切にエスケープしています!)