Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Поиск по интервалу даты StartTime and EndTime
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Поиск по интервалу даты StartTime and EndTime

Страниц (1): [1]
 

1. CTAPu4OK - 25 Февраля, 2012 - 20:16:25 - перейти к сообщению
Видел похожу тему, но ответов в ней нету) и как ни странно мне так же потребовалось организовать подобное) сейчас постараюсь объяснить что надо Улыбка

Имеем Таблицу Time в которой присутствуют поля StartTime и EndTime
при добавлении записи в таблицу заносятся два значения в unixtime формате
дата начала показа и дата завершения показа, дата начала показа не должна входить в интервал уже существующей записи начало - конец, так же и с датой конца, она не должна входить в дату начала показа другой записи.

запись 1
CODE (SQL):
скопировать код в буфер обмена
  1. StartTime 10
  2. EndTime   20

добавляем вторую запись
CODE (SQL):
скопировать код в буфер обмена
  1. StartTime  15
  2. EndTime   25


требуется запросом найти первую запись для того что бы изменить вторую запись в большую или меньшую сторону, т.е. из второй записи сделать
CODE (SQL):
скопировать код в буфер обмена
  1. StartTime 20
  2. EndTime  25


но так же если вдруг будет ранее добавленная запись
CODE (SQL):
скопировать код в буфер обмена
  1. StartTime 24
  2. EndTime  30

то вторая запись уже должна будет изменится следующим образом
CODE (SQL):
скопировать код в буфер обмена
  1. StartTime 20
  2. EndTime 24


Думаю такое лучше будет осуществить с помощью тригера, но как определить интервал чисел в записях ?

Заранее спасибо Улыбка
2. CTAPu4OK - 25 Февраля, 2012 - 22:44:06 - перейти к сообщению
Нашел в сети пример:
http://www[dot]iinuu[dot]ru/ru/it-guru/m[dot][dot][dot]nnyie-intervalyi

Если кому небудь нужно будет, написал триггер)
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. DELIMITER |
  3. CREATE TRIGGER updateTime BEFORE INSERT ON `time`
  4.   FOR EACH ROW BEGIN
  5.     SET NEW.line = GeomFromText(CONCAT('LineString(', NEW.StartDate, ' 0, ', NEW.EndDate, ' 0)'));
  6.   END;
  7. |
  8. DELIMITER ;
  9.  


Все работает на ура, но на сколько быстро работает еще не проверял =)

 

Powered by ExBB FM 1.0 RC1