2013-05-25 6 views
1

У меня есть две таблицы данных:Подсчитать количество свободных номеров между двумя датами

  • 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
+2

[Что вы пытались?] (http://mattgemmell.com/2008/12/08/what-have-you-tried/) См. [о переполнении стека] (http://stackoverflow.com/ около). –

+2

показать структуру вашей таблицы и некоторые данные примера, чтобы сэкономить некоторое время – Drew

+0

@DrewPierce: Я добавил данные о структуре, пожалуйста, помогите мне. Спасибо! – user1237902

ответ

0

Вы можете добавить еще один Логическое столбец, как предупреждение и запрос значения с использованием этого значения столбца

Пример:

SELECT sum (quantity_room_booking) FROM tbbooking где DATE_ADD (endDate, IN Интер вале -1 DAY)> = '2013-05-26' и STARTDATE < = '2013-05-28' и бронируется = True GROUP BY roomtypeid

Я надеюсь, что это поможет вам получить количество комнаты тип

Смежные вопросы