0

回答を使用して、航空機のメンテナンススケジュールを示すメンテナンスカレンダーと呼ばれるカレンダーにデータを生成した質問をフォローアップします。これは、そのための 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 テーブル

カレンダーは次のようになります (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 つにまとめることができないようです。

4

2 に答える 2

0

この質問に対する答えは、単純に 2 つのクエリを結合することだと思います。この例は、次のようになり、2 番目のテーブルにない列を null にするだけです。

SELECT id, date, field3, description 
FROM table1 
UNION 
SELECT id, date, field3, null 
FROM table2
于 2013-03-12T04:24:40.833 に答える