![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
letsgo |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 17.2.2009 Репутация: нет Всего: нет |
Коллеги, прошу помощи в составлении алгоритма (последовательности действий) решения следующей задачи.
Существует таблица, в которой хранятся данные по ценам отелей на различные периоды.
Иногда, на эти отели приходят, так называемые, спецпредложения в формате XLS, которые необходимо загружать в эту таблицу. Может будет проще, если приведу пример. Итак, возьмем отель с ID=5, для него имеются 5 записей в таблице:
Т.е. в кратце, отель с ID=5 имеет 5 периодов заездов, с 01.06.2010 по 25.06.2010 цена проживания 50 в сутки, с 07.07.2010 по 28.07.2010 46 в сутки и т.д., причём период с 07.07.2010 по 28.07.2010 является, так называемым "спецпредложением", так как значение 3 столбца не равняется нулю. Теперь возвращаемся к задаче. Я уже говорил, что иногда приходят файлы новых спецпредложений, которые требуется загружать в эту таблицу. Привожу пример:
Т.е. у нас есть три строки, которые нужно загрузить или не загрузить в нашу таблицу. Новая таблица цен для отеля с ID=5 после загрузки данного файла должна выглядеть следующим образом.
Принцип изменения цен: 1. Строка может изменяться на новую только в том случае, если новая дата спецпредложения больше имеющейся даты спецпредложения. Например, если в базе хранится период с 07.07.2010 по 28.07.2010, а дата его спецпредложения 28.06.2010, мы не можем изменять этот период, если приходит новое спецпредложение на период с 10.07.2010 по 15.07.2010 с датой спецпредложения 25.06.2010 2. В базе не должно быть пересекающихся дат, т.е. периоды с 01.06.2010 - 10.06.2010 и 08.06.2010 - 15.06.2010 - это очень большой косяк. Такого быть не должно. Если в базе хранится период с 02.09.2010 по 08.09.2010 и приходит SPO с датами с 04.09.2010 по 06.09.2010, то в общем случае получается три новых периоды, это: 02.09.2010 - 03.09.2010, 04.09.2010 - 06.09.2010, 07.09.2010 - 08.09.2010 |
||||||||
|
|||||||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |