Мне нужно создать поисковый скрипт, который бы смотрел таблицу дат доступности домов и совпадал с пользовательским поисковым вводом.
Это пример данных:
House is available for rent in these two date ranges:
[0] => Array
(
[start_date] => 2011-01-01
[end_date] => 2011-03-31
[nb_of_people] => 6
[price_per_night] => 100
)
[1] => Array
(
[start_date] => 2011-04-01
[end_date] => 2011-04-30
[nb_of_people] => 7
[price_per_night] => 110
)
Я подготовил скрипт, который объединяет непрерывные / перекрывающиеся даты в одну запись в БД, поэтому результат будет выглядеть следующим образом:
(
[start_date] => 2011-01-01
[end_date] => 2011-04-30
[availability_ids] => 0;1
)
ОБНОВЛЕНО:
расчеты не были ясны, поэтому я обновил сообщение:
Допустим, пользователь искал дом:
даты: с 2011-03-28 по 2011-04-08, для 6 человек, и он готов тратить от 90 до 108 долларов за ночь.
Это мое руководстворасчеты для этого поиска:
- даты соответствуют нашему объединенному интервалу дат
- общее количество дат, которые пользователь хочет остаться: 11 дней
- цена запервый период с 2011-03-28 по 2011-03-31 - 3 дня * 100 долларов США = 300
- цена за второй период с 2011-04-01 по 2011-04-08 - 8 дней * 110 долларов США = 880 * 1033 долларов США *
- общая средняя цена за ночь = 300 + 880/11 = $ 107,27
- цена и количество людей соответствуют вводу пользователя, поэтому мы показываем этот дом
Если вы объединяете даты и вычисляете среднюю цену за ночь для данного периода, сценарий поиска должен соответствовать массиву данных, приведенному выше.
Мой вопрос таков: как бы вы организовали данные вбазы данных и как должен выглядеть алгоритм поискового скрипта для мгновенного получения результатов из базы данных.
PS Я в порядке, чтобы запускать задание cron для ежедневной реорганизации данных при необходимости.
Спасибо за любые советы.