回答を使用して、航空機のメンテナンススケジュールを示すメンテナンスカレンダーと呼ばれるカレンダーにデータを生成した質問をフォローアップします。これは、そのための MySQL クエリです。
SELECT DISTINCT s.reg AS 'reg',
a.date AS 'date'
FROM (SELECT Curdate()
+ INTERVAL (a.a + (10 * b.a) + (100 * c.a)) day AS Date
FROM (SELECT 0 AS a
UNION ALL SELECT 1
UNION ALL SELECT 2
UNION ALL SELECT 3
UNION ALL SELECT 4
UNION ALL SELECT 5
UNION ALL SELECT 6
UNION ALL SELECT 7
UNION ALL SELECT 8
UNION ALL SELECT 9) AS a
CROSS JOIN (SELECT 0 AS a
UNION ALL SELECT 1
UNION ALL SELECT 2
UNION ALL SELECT 3
UNION ALL SELECT 4
UNION ALL SELECT 5
UNION ALL SELECT 6
UNION ALL SELECT 7
UNION ALL SELECT 8
UNION ALL SELECT 9) AS b
CROSS JOIN (SELECT 0 AS a
UNION ALL SELECT 1
UNION ALL SELECT 2
UNION ALL SELECT 3
UNION ALL SELECT 4
UNION ALL SELECT 5
UNION ALL SELECT 6
UNION ALL SELECT 7
UNION ALL SELECT 8
UNION ALL SELECT 9) AS c) a
INNER JOIN maintenance_sched s
ON a.date >= s.date_from
AND a.date <= s.date_to
WHERE Month(date) = '".$month."'
AND Dayofmonth(date) = '".$dayArray["mday"]."'
AND Year(date) = '".$year."'
以下は、maintenance_sched データベースです。
カレンダーは次のようになります (maintenance_sched のデータに基づく):
次に、予約カレンダーと呼ばれる別のカレンダーがあり、メンテナンス カレンダーと同じコードを使用しますが、クエリは異なります。これは予約カレンダー クエリです: SELECT acode FROM reservation WHERE month(etd) = '".$month."' AND dayofmonth(etd) = '".$dayArray["mday"]."' AND year(etd) = '".$year."' ORDER BY etd"
。
予約表はコチラ
予約カレンダーはこんな感じです。
編集:
私がやりたいことは、これらの 2 つのカレンダーを1 つのカレンダーにまとめて、maintenance_sched クエリの結果を取り消し線付きの文字列として出力することです。しかし、2 つのクエリを 1 つにまとめることができないようです。