2 つのデータ テーブルがあります。
tbroom_capacity
:roomtype
,quantity_room
,note
CREATE TABLE `tbroom_capacity` ( `id` int(10) NOT NULL DEFAULT '0', `roomtype` varchar(30) COLLATE utf8_bin DEFAULT NULL, `quantity_room` int(20) DEFAULT NULL, `note` varchar(50) COLLATE utf8_bin DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
データ: https://dl.dropboxusercontent.com/u/50542216/1.png
tbbooking
:guestid
,roomtypeid
,quantity_room_booking
,startDate
,endDate
CREATE TABLE `tbbooking` ( `guestid` int(20) DEFAULT NULL, `roomtypeid` varchar(20) COLLATE utf8_bin DEFAULT NULL, `quantity_room_booking` int(20) DEFAULT NULL, `startDate` date DEFAULT NULL, `endDate` date DEFAULT NULL, `id` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
データ:
https://dl.dropboxusercontent.com/u/50542216/2.png
すべての部屋タイプについて、2 つの日付間の残りの部屋数を計算したいと考えています。
例:
スタンダード10室、スーペリア2室、VIP3室の3タイプ計15室
- ゲスト 1: 2013 年 5 月 26 日から 2013 年 5 月 27 日までの 3 つの標準
- ゲスト 2: 2013 年 5 月 27 日から 2013 年 5 月 28 日までの 3 つの標準
- ゲスト 3 は 2013 年 5 月 26 日から 2013 年 5 月 28 日までの部屋を予約したい
利用できない部屋の合計を取得するためにこれを試しました:
SELECT sum(quantity_room_booking) FROM tbbooking
where DATE_ADD(endDate,INTERVAL -1 DAY) >= '2013-05-26'
and startDate <= '2013-05-28' GROUP BY roomtypeid
しかし、結果は次のとおりです。
- 6標準
- 2 優れた
- 3 VIP
結果は次のようになります。
- 3標準
- 2 優れた
- 3 VIP