0

私は、reservation_schedule カレンダーと maintenance_schedule カレンダーの 2 つの別々のカレンダーを持っています。Reservation_schedule は予約テーブルからデータをフェッチし、maintenance_schedule はメンテナンス テーブルからデータをフェッチします。私の目標は、2 つのカレンダーから取得した両方のデータを 1 つのカレンダーに入れることです。

これが、reservation_schedule に使用したクエリです。

SELECT acode
FROM reservation 
WHERE month(etd) = '".$month."' 
AND dayofmonth(etd) = '".$dayArray["mday"]."' 
AND year(etd) = '".$year."' 
ORDER BY etd

そして、maintenance_schedule の場合:

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."' 

を使用して両方のデータを表示できますUNIONが、メンテナンス テーブルのデータを取り消し線付きの文字列として出力する必要があります。このコードでクエリ結果を出力しています。

$chkEvent_res = mysql_query($chkEvent_sql) or die(mysql_error());

        if (mysql_num_rows($chkEvent_res) > 0) {
            $event_title = "<br/>";
            while ($ev = mysql_fetch_array($chkEvent_res)) {
                $event_title .= stripslashes($ev["reg"])."<br/>";
                //$event_title .= "<del>".stripslashes($ev["acode"])."</del><br/>";
            }
            mysql_free_result($chkEvent_res);
        } else {
            $event_title = "";
        }

でクエリを使用すると、UNIONクエリを 1 回実行するため、メンテナンスからの出力文字列に取り消し線を設定できません。取得したデータを保守テーブルから取り消し線付きで出力するにはどうすればよいですか? で1つのクエリを実行する必要がありますUNIONか? その場合、メンテナンス テーブルと予約テーブルからのデータをどのように分離できますか? クエリを分離した場合、どのように実行できますか? それはのようなものであるべき$chkEvent_res = mysql_query($chkEvent_sql1) and mysql_query($chkEvent_sql2) or die(mysql_error());ですか?助けてください、ありがとう。

4

1 に答える 1

0

これら 2 つのクエリを実行できる唯一の方法UNIONは、各クエリに同じ数の列があり、各列のデータ型が同じである場合です。関連するデータ型については不明です。最初のクエリから「acode」が返され、2 番目のクエリから「reg」と「date」が返されます。

実際UNIONに結果を取得して必要なものを取得できると仮定すると、クエリのソースを返す列を結果に追加することを検討できます。

SELECT Field1, Field2, Field3, 'Table1' Source
FROM TABLE1
...
UNION
SELECT Field1, Field2, Field3, 'Table2' Source
FROM Table2
...

そのソース列を使用して、それに応じて結果をフォーマットできます。

の使用に関する追加情報を次に示しUNIONます。

http://dev.mysql.com/doc/refman/5.0/en/union.html

于 2013-03-14T02:57:35.220 に答える