Расчет выделения интервала даты - расчет даты - PullRequest
0 голосов
/ 18 апреля 2011

ребята, вот ситуация, от которой я страдаю;

У меня есть продукты для размещения в моей базе данных. и под каждым отелем есть периоды, которые являются интервалами дат для бронирования. и в определенные периоды времени существуют типы номеров, их цены и распределение.

так скажем так;

 HOTEL A

 01.05.2011 - 25.05.2011
      Room A : 3 Allotment daily, 34 USD
      Room B : 4 Allotment daily, 45 USD
 26.05.2011 - 14.06.2011
      Room A : 3 Allotment daily, 45 USD
      Room B : 4 Allotment daily, 67 USD

с другой стороны, в моей базе данных есть таблица бронирования, в которой хранятся данные бронирования. скажем так;

парень сделал заказ на ОТЕЛЬ А * на период 22.05.2011 - 30.05.2011 и на номер А. Эта резервация также была сохранена в базе данных.

проблема заключается в следующем;

как я могу рассчитать выделение здесь? В моем примере выделение комнаты А должно быть 2 на 22, 23, 24, 25, 26, 27, 28, 29 мая. Мне нужно рассчитать это, потому что я не буду показывать комнату, в которой выделено 0 для любой даты между запрошенным интервалом дат.

Я использую C # Entity Framework для целей расчета, и моя база данных находится на сервере MS SQL. пример хранимой процедуры также был бы хорош. Thatnks!

РЕДАКТИРОВАТЬ: Вот пример кода, который я пытаюсь;

    declare @a as table(a date) declare @b as table(b date) insert @a values('2011-05-22') insert @b values('2011-05-30') 

;with e as( select a as dayt,0 as lvl from @a aa

 union all select DATEADD(DAY,1,aa.dayt) as dayt, lvl+1 from @b bb inner join e aa ON aa.dayt<bb.b ) 

select * from e

1 Ответ

1 голос
/ 19 апреля 2011

Как то так?

Шаг 1: для каждого резервирования определяют периоды, в которых начало / конец резервирования перекрываются. Вы можете присоединиться на основе (booking_end> = period_start и booking_start <= period_end). Это должно вернуть периоды, которые резервирование перекрывает. </p>

Шаг 2: вычтите выделения для каждого периода. Я не уверен, как вы получаете 2 распределения в вашем примере только с 1 резервированием, поэтому не могу точно сказать вам, как сделать эту математику.

Я не могу привести конкретные примеры, если не знаю модель данных и некоторые примеры данных. Вы можете предоставить это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...