|
Хранения и обработки данных для сайта бронирования отелей.
|
|||
---|---|---|---|
#18+
Добрый день! Возникла сложность с организацией таблицы БД. Опишу задачу. Есть сайт с отелями. Цены отелей зависят от дат заезда / выезда. Например, за каждый деть одного отеля с 1-ого марта по 31-ое марта стоит 1000 рублей. А второй отель стоит с 1-ого по 7-ое марта стоит 500 рублей, с 8 по 9 стоит 2000 рублей, а с 10 по 31 стоит 1000 рублей. Посетитель сайта вводит даты заезда и отъезда с 7-ого по 9 марта (3 суток). Первый отель получается будет стоить 1000*3 = 3000, второй отель - 1*500 + 2*2000 = 4500. Нужно в БД хранить цены за все интервалы дат всех отелей, чтобы потом на основе данных таблицы счиатать итоговую сумму отеля за интервал дат. К чему пока пришёл: В БД есть таблица с полями HOTEL_ID, DATE_FROM, DATE_TO, PRICE, MAX_COUNT_PEOPLE. Пользователь вводит нужные ему даты и мы получаем сумму запросом: -- Получаем все строки таблицы в которых дата ЗАЕЗДА находится в указанный пользователем интервал дат select ( SELECT (DATE_TO - STR_TO_DATE('<дата заезда указанная пользователем>', '%Y-%m-%d')) * PRICE as COST FROM obect_periods WHERE '<дата заезда указанная пользователем>' BETWEEN DATE_START AND DATE_TO ) + -- Получаем все строки таблицы в которых дата ВЫЕЗДА находится в указанный пользователем интервал дат ( SELECT (STR_TO_DATE('<дата выезда указанная пользователем>', '%Y-%m-%d') - DATE_START) * PRICE as COST FROM obect_periods WHERE '<дата выезда указанная пользователем>' BETWEEN DATE_START AND DATE_TO ) + -- Получаем все строки таблицы в которых дата ЗАЕЗДА раньше чем дата указанная пользователе и дата ВЫЕЗДА позже чем дата указанная пользователе ( SELECT (DATE_TO - DATE_START) * PRICE as COST FROM obect_periods WHERE '<дата заезда указанная пользователем>' <= DATE_START AND '<дата выезда указанная пользователем>' >= DATE_TO ) as total Так получается ценник за указанный пользователем интервал дат. Но так же нужно получать и ID отелей для которых рассчитаны ценники. Подскажите, пожалуйста, как можно получать не только ценники за интервалы дат, но и дополнительные поля которые будут в таблице(например, HOTEL_ID) и возможно есть более правильная структура таблицы БД для хранения таких дат? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2019, 17:13 |
|
|
start [/forum/topic.php?fid=47&fpage=40&tid=1829322]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 121ms |
0 / 0 |