これを達成する方法を見つけるために14時間以上費やしましたが、運がありません!
私は予約システムに取り組んでいます.2つのテーブルがあります:
Rooms
---------
ID - ROOM_TYPE - NAME - ROOM_COUNT
1 1 single room 6
2 2 double room 4
3 3 studio 2
Booking
---------
ID - ROOM_TYPE - Customer_NAME - CHECK_IN - CHECK_OUT
1 3 John A 1-1-2013 4-1-2013
2 3 John B 2-1-2013 5-1-2013
3 2 John C 8-1-2013 9-1-2013
ユーザーが利用可能な部屋を検索するために 2 つの日付を入力した後、私が持っているすべてのタイプの部屋を表示するクエリを作成します。3 つのタイプ (シングル/ダブル/スタジオ) があり、各タイプにはホテルで利用可能な部屋の数があります (例: : ホテルにはデフォルトで 6 つのシングルルームがあります)
利用可能なすべてのタイプの部屋を取得するために、このクエリで終了します
SELECT *
FROM rooms
where id NOT IN
( SELECT room_type FROM booking
WHERE "'.$check_in.'" <= check_out
AND "'.$check_out.'" >= check_in
)
ROOMSテーブルのROOM_COUNTフィールドに保存された値よりも少ない予約からのWHEREカウント(room_type)という別の条件を作成する必要があります..
上記の表の構造によって異なりますが、ホテルにはスタジオが 2 つしかなく、2013 年 4 月 1 日にはすべて利用できません..そのため、誰かがその日付で検索した場合、クエリはスタジオ タイプの部屋を表示すべきではありません..
部屋の種類ごとに予約数を数えて結果を表示するようなものが必要です..
前もって感謝します