我有两个数据表:
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
我想计算每个房间类型的两个日期之间的剩余房间数。
一个例子:
共有15个房间,3个类型:10个标准,2个高级,3个VIP
我试过这个来检索总不可用的房间:
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
但结果是:
结果应为:
答案 0 :(得分:0)
您可以再添加一个布尔列,例如“已预订”,并使用该列值
查询该值示例:
SELECT sum(quantity_room_booking)FROM tbbooking 其中DATE_ADD(endDate,INTERVAL -1 DAY)&gt; ='2013-05-26' 和startDate&lt; ='2013-05-28'并且被预订= true GROUP BY roomtypeid
我希望这可以帮助您获得房间类型