У меня есть две таблицы данных:Подсчитать количество свободных номеров между двумя датами
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 ВИП
- Гость 1: 3 стандарт от 2013-05-26 до 2013-05-27
- Гость 2: 3 стандарт от 2013-05-27 до 2013-05-28
- Гость 3 хотите забронировать комнату от 2013-05-26 до 2013-05-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
Но результат:
- стандарт
- 2 выше
- 3 VIP
результатом должно быть:
- стандарт
- 2 выше
- 3 VIP
[Что вы пытались?] (http://mattgemmell.com/2008/12/08/what-have-you-tried/) См. [о переполнении стека] (http://stackoverflow.com/ около). –
показать структуру вашей таблицы и некоторые данные примера, чтобы сэкономить некоторое время – Drew
@DrewPierce: Я добавил данные о структуре, пожалуйста, помогите мне. Спасибо! – user1237902