zaartix
Новичок
Пересечение периодов (дат)
Подскажите плз как быть?
таблица содержит грубо 2 поля - начало периода fromClock,
конец периода toClock,
ну и id услуги - это usluga.
типы полей - первые 2 date и последнее integer
перед тем, как занести туда новую запись мне надо проверить не накладываются-ли периоды, тот, что собираюсь занести с каким-нибудь из тех, что уже есть, ес-но по заданнойуслуге.
я делаю так:
[sql]
select count(*) as num
from table
where usluga='$usluga' and ('$from'>=fromClock and '$from'<=toClock) or ('$to'>=fromClock and '$to'<=toClock) or ('$from'<=fromClock and '$to'>=toClock)
[/sql]
т.е. считаю количество пересечений, только мне нужно посчитать максимальное ежедневное пересечение в течение заданного периода, а мой пример считает сколько всего пересечений.
Для наглядности
К примеру в таблице есть периоды по нужной услуге:
2006-01-14 по 2006-01-17
2006-01-14 по 2006-01-17
2006-01-29 по 2006-02-02
Хотим занести новый период по этой услуге:
2006-01-13 по 2006-02-28
Теперь поясню для чего это используется:
Есть определенный набор услуг. Юзер может заказывать любую из них, причем заказывает по календарю, к примеру с 13 января по 28 февраля.
По каждой из услуг есть ограничение по количеству одновременно работающих, к примеру одновременно не более 3 услуг. Так вот мне надо юзеру либо разрешить заказывать на заданный период услугу, либо нет. Соответственно, если нет - тогда показать как-то проблемные периоды.
прошу помощи в решении этого вопроса.
Подскажите плз как быть?
таблица содержит грубо 2 поля - начало периода fromClock,
конец периода toClock,
ну и id услуги - это usluga.
типы полей - первые 2 date и последнее integer
перед тем, как занести туда новую запись мне надо проверить не накладываются-ли периоды, тот, что собираюсь занести с каким-нибудь из тех, что уже есть, ес-но по заданнойуслуге.
я делаю так:
[sql]
select count(*) as num
from table
where usluga='$usluga' and ('$from'>=fromClock and '$from'<=toClock) or ('$to'>=fromClock and '$to'<=toClock) or ('$from'<=fromClock and '$to'>=toClock)
[/sql]
т.е. считаю количество пересечений, только мне нужно посчитать максимальное ежедневное пересечение в течение заданного периода, а мой пример считает сколько всего пересечений.
Для наглядности
К примеру в таблице есть периоды по нужной услуге:
2006-01-14 по 2006-01-17
2006-01-14 по 2006-01-17
2006-01-29 по 2006-02-02
Хотим занести новый период по этой услуге:
2006-01-13 по 2006-02-28
Теперь поясню для чего это используется:
Есть определенный набор услуг. Юзер может заказывать любую из них, причем заказывает по календарю, к примеру с 13 января по 28 февраля.
По каждой из услуг есть ограничение по количеству одновременно работающих, к примеру одновременно не более 3 услуг. Так вот мне надо юзеру либо разрешить заказывать на заданный период услугу, либо нет. Соответственно, если нет - тогда показать как-то проблемные периоды.
прошу помощи в решении этого вопроса.