3

特定の機能に少し問題があります。部屋の予約表があります。

表: 予約

room (BIGINT), date (DATE)
            4,  2012-09-25
            4,  2012-09-27
            4,  2012-09-30

ID = 4 の部屋が日付範囲内で利用可能な日付を取得する必要があります。たとえば、2012 年 9 月 25 日から 2012 年 10 月 1 日まで (両端を含む) の部屋が利用可能な日付が必要な場合は、次の結果を取得する必要があります。

date (DATE)
 2012-09-26
 2012-09-28
 2012-09-29
 2012-10-01

どんな助けでも大歓迎です。前もって感謝します。

4

2 に答える 2

1

@steven-cheng が言ったように、一時テーブルの作成が面倒なので、mysql とコードの組み合わせを使用する必要がありました。コードを使用して利用可能な日付を取得する方が高速です。

于 2013-05-22T18:29:28.287 に答える
1

この種のクエリは、データベースに日付のテーブルを追加すると簡単に処理できます。多数の日付を入力し (必要に応じて追加し)、右外部結合を実行して欠落している日付を見つけます。

追加のテーブルを追加できない、または追加したくない場合は、次のように日付を整数フィールド (1970 年 1 月 1 日からの日数を表す) に変換できます。

SELECT room, UNIX_TIMESTAMP(`date`)/86400 FROM reservations

そこから、この質問または他の場所の手法を使用して、そのシーケンスのギャップを探すことができます。

于 2012-09-25T16:00:09.267 に答える