|  | 
Задавайте вопросы, мы ответим
Вы не зашли.
Привет форумчанам!
Есть проблема. Для начала опишу идею.
Задание - сделать калькуляцию стоимости тура (отдых) с определенной даты по определенную дату.
База:
id - INT(11) - autoinc
date_from - date (00-00-0000)
date_to - date (00-00-0000)
parice - vchar 5 NOT NULL
hotel_id - vchar 5 NOT NULL
Сложность - даты в записях могут пересекаться, нужно посчитать стоимость тура за дни, при этом с каждого пересечения нужно выбрать меньшую стоимость для отеля с id 1.
Пример текстовый (для более наглядного примера смотрим прикрепленный файл):
id   date from      date to        Price  Hotel_id
1    22-04-2010   26-04-2010  100    1
2    27-04-2010   02-05-2010  200    1
3    24-04-2010   28-04-2010  150    1
То есть в итоге нужно вытащить ответ с, например, 23-04-2010 по 01-05-2010 одной строкой по следующему принципу:
Смотрим в каких периодах на этот день меньшая цена и прибавляем меньшую. В тоге должен получится ответ 1300
Огромное спасибо за помощь!
ЗЫ: добавляю: может быть о одна запись в базе по текущему отелю, то есть в током случае просто просуммировать стоимость каждого дня. Может быть 2,4 и тд. Спасибо! Если кто с Киева поможет, то с меня пиво! 
Отредактированно extsps (13.05.2010 15:35:56)
Неактивен
Сделал, помогли. Кому надо может:
CREATE PROCEDURE `procedure1`(IN hotel_ident INT, IN date_in DATE, IN date_off DATE)
BEGIN
DECLARE s_date DATE;
SET s_date = date_in;
drop temporary table if exists `days`;
create temporary table `days`(`day` date not null,PRIMARY KEY (`day`)) ENGINE=MEMORY;
  WHILE s_date <= date_off DO
    INSERT INTO days (`day`) VALUES (s_date);
    SET s_date=DATE_ADD(s_date, INTERVAL 1 DAY);
  END WHILE;
  select sum(price) as total from (select (select min(price) from prices where prices.date_from <=`days`.`day` and prices.date_to>=`days`.`day`) as price from `days`) subtable;
END;
Неактивен