私は、次のような状況があります。日付範囲に一致する日付の一致を表示する方法
+------------+-----------+------------+----------------+
| date | event | start_date | duration(days) |
+------------+-----------+------------+----------------+
| 2010-01-01 | concert | 2010-01-01 | 2 |
+------------+-----------+------------+----------------+
| 2010-01-02 | NULL | NULL | NULL |
+------------+-----------+------------+----------------+
| 2010-01-03 | workshops | 2010-01-03 | 3 |
+------------+-----------+------------+----------------+
| 2010-01-04 | NULL | NULL | NULL |
+------------+-----------+------------+----------------+
| 2010-01-05 | NULL | NULL | NULL |
+------------+-----------+------------+----------------+
| 2010-01-06 | NULL | NULL | NULL |
+------------+-----------+------------+----------------+
| 2010-01-07 | NULL | NULL | NULL |
+------------+-----------+------------+----------------+
| 2010-01-08 | festival | 2010-01-08 | 5 |
+------------+-----------+------------+----------------+
| 2010-01-09 | NULL | NULL | NULL |
+------------+-----------+------------+----------------+
は今、私はすべての日付の行のために、特定のイベントが起こっている方法で、上記の情報を表示する必要が名前は、開始時の最初の日だけでなく、イベント列にも表示されます。
3つのテーブル、DATESだけと1、EVENTSとSTART_DATESと各イベントのDURATIONと1と1があります。
これまでのところ、私は上記のようなテーブルしか作成できませんでしたが、NULL値をイベントの期間の各日のイベント名に置き換える方法はわかりません。
SELECT d AS date, event, start_date, duration
FROM dates
LEFT JOIN info ON info.start_date=d.date AND city='LA'
LEFT JOIN events ON events.event=info.event
WHERE d BETWEEN '2010-01-01' AND '2010-01-09'
以下
、日付、イベントAS – Galz
SELECT dは、クエリを共有してください。開始日、継続時間 日付から LEFT JOIN情報ON info.start_date = d.date AND city = 'LA' LEFT JOIN events ON events.event = info.event ここで '2010-01-01' AND '2010 -01-09 ' – tabaluga
デザインを変更することを検討できますか?開始日と終了日を保存する代わりに、開始日と終了日を保存できますか?それはあなたの人生をはるかに簡単にします! – Galz