0

私はこのオンライン予約プロジェクトに取り組んでおり、この部分に在庫があります。これがシナリオです。データベース構造:

tbl_guestinfo
   guest_id
   name
   checkin
   checkout
   numAdults
   numChild

tbl_rooms
   room_id
   room_name
   guest_id
   type_id

tbl_roomtype
   type_id
   room_rate
   room_type
   noOf_Rooms

利用可能なすべての部屋をスキャンして、必要なすべての情報を表示できるクエリから、すでに良い結果を得ることができます。

SELECT *
FROM tbl_rooms, tbl_roomtype 
WHERE guest_id NOT IN
(
SELECT `guest_id` from tbl_guestinfo where
(`checkin` < ' $varCheckOut' and `checkout`>= '$varCheckOut' )
OR (`checkin`<= '$varCheckIn' and `checkout`> '$varCheckIn' )
OR (`checkin`>= '$varCheckIn' and `checkout`<='$varCheckOut')
)

必要なのは、利用可能な残りの room_type をすべて表示することです。たとえば、5 つのスタンダード ルームと 5 つのデラックス ルームがあり、1 つのスタンダード ルームが 2012 年 10 月 1 日から 2012 年 10 月 5 日まで guest1 によって占有され、1 つのデラックス ルームが同じ日に guest2 によって占有されている場合、サイトはそのままになります。 room_type ごとに 4 つの部屋が残っているため、スタンダード ルームとデラックス ルームを表示します。

room_type を html テーブルに配置し、noOf_Rooms をコンボ ボックスに残します。

たくさん調べて読んでいるのに、まだ理解できないのを助けてください。よろしくお願いいたします。

乾杯

4

1 に答える 1

0

クエリを拡張する:

 SELECT room_type, count(*)
 FROM tbl_rooms, tbl_roomtype 
 WHERE guest_id NOT IN
 (
   SELECT `guest_id` from tbl_guestinfo where
   (`checkin` < ' $varCheckOut' and `checkout`>= '$varCheckOut' )
   OR (`checkin`<= '$varCheckIn' and `checkout`> '$varCheckIn' )
   OR (`checkin`>= '$varCheckIn' and `checkout`<='$varCheckOut')
 )
 GROUP by room_type

部屋のテーブルに guest_id が含まれているのが気に入りません。ゲストと部屋をマッピングし、すべての日付などを含む「予約」テーブルのようなものを作成します.

于 2012-09-11T18:02:00.890 に答える