SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 03.11.2010 13:49:03

Antik
Участник
Зарегистрирован: 03.11.2010
Сообщений: 4

Нетривиальная задача с датами

Приветствую,

Имею такую структуру:

id = integer
start_time = datetime
end_time = datetime
is_active = bool
остальное не важно.

На рисунке временная шкала с пакетами:

http://img517.imageshack.us/img517/170/query.png

У клиента есть 4 пакета услуг, которые последовательны по времени. Все четыре пакета активные (is_active = 1) Пользователь желает добавить новый пакет , который более совершенный (5), но пересекается по датам с двумя другими пакетами (2 и 3). Новый пакет должен стать активным, а два других должны стать не активными (is_active = 0), при этом пакеты 1 и 5 должны остаться нетронутыми.

Мне необходимо сформировать update запрос или запросы, который/ые должен/ны деактивировать пересекающиеся по дате пакеты (2 и 3) при условии, что изначально известны только start_time и end_time добавленного пакета (5).

Неактивен

 

#2 03.11.2010 14:14:29

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Нетривиальная задача с датами

Они удовлетворяют условию start_time < $end_time AND end_time > $start_time,
где $ обозначают константные выражения (в Вашем примере — даты пакета 5).

Неактивен

 

#3 03.11.2010 14:34:55

Antik
Участник
Зарегистрирован: 03.11.2010
Сообщений: 4

Re: Нетривиальная задача с датами

Я забыл написать про вот такую ситуацию.

http://img812.imageshack.us/img812/9715/query2.png

Тогда запрос предложенный выше уже не сработает.

Неактивен

 

#4 03.11.2010 15:21:23

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Нетривиальная задача с датами

А Вы проверьте? wink

Неактивен

 

#5 03.11.2010 15:32:13

Antik
Участник
Зарегистрирован: 03.11.2010
Сообщений: 4

Re: Нетривиальная задача с датами

О чёрт, очёнь извиняюсь. Очень тонко, что я не заметил и подумал что я такой вариант уже пробывал.
Спасибо.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson