powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Хранения и обработки данных для сайта бронирования отелей.
1 сообщений из 1, страница 1 из 1
Хранения и обработки данных для сайта бронирования отелей.
    #39770762
yuriy.sv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Возникла сложность с организацией таблицы БД.
Опишу задачу.
Есть сайт с отелями.
Цены отелей зависят от дат заезда / выезда.
Например, за каждый деть одного отеля с 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) и возможно есть более правильная структура таблицы БД для хранения таких дат?
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Хранения и обработки данных для сайта бронирования отелей.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]