powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Проверить на все диапазоны времени
10 сообщений из 10, страница 1 из 1
Проверить на все диапазоны времени
    #39823886
motoroller1983
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, есть такая задачка почему-то не получается решить:

простая табличка:

users:
-------
id - int
user: int
start: datetime
end: datetime

к примеру пру записей:

id: 1
user: 131
start: 2019-06-03 09:00:00
end: 2019-06-03 19:00:00

id: 2
user: 131
start: 2019-06-03 20:00:00
end: 2019-06-03 22:00:00

При добавлении новой записи, к примеру такой:
id: 3
user: 131
start: 2019-06-03 19:30:00
end: 2019-06-03 20:30:00

Мы должны проверить, что данное время не занято, нашем случае новая запись не должна добавится, так как время занято
...
Рейтинг: 0 / 0
Проверить на все диапазоны времени
    #39823959
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
motoroller1983Мы должны проверить, что данное время не занято, нашем случае новая запись не должна добавится, так как время занятоТриггером хотите сделать? ну так не вопрос - пишите BEFORE INSERT триггер, в нём проверяйте, что нет пересечений (количество пересечений с данными из NEW равно нулю), и при несоответствии генерите ошибку дублирования.
...
Рейтинг: 0 / 0
Проверить на все диапазоны времени
    #39823988
motoroller1983
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Вопрос, не про триггер, а как сделать проверку на пересечение, вот это мне не совсем не совсем понятно
...
Рейтинг: 0 / 0
Проверить на все диапазоны времени
    #39824053
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
motoroller1983Akina,

Вопрос, не про триггер, а как сделать проверку на пересечение, вот это мне не совсем не совсем понятнотакие вопросы не на форуме по программированию нужно задавать, а в школьном форуме по геометрии, 7-й класс, вторая четверть.

Именно тогда детям объясняют, что два отрезка имеют одну и более общих точек, если каждое из их кончал не меньше каждого из начал.
...
Рейтинг: 0 / 0
Проверить на все диапазоны времени
    #39824071
Щукина Анна,

Ну вот если сравнивать чтобы начало времени было меньше, то это срабатывает, когда есть только одна запись, но когда записей несколько ваш вариант уже не работает, потому что будет запись которая уже раньше.
...
Рейтинг: 0 / 0
Проверить на все диапазоны времени
    #39824086
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Питерский11когда записей несколько ваш вариант уже не работает, потому что будет запись которая уже раньше.Фигню говорите, аднака... всё прекрасно работает.
...
Рейтинг: 0 / 0
Проверить на все диапазоны времени
    #39824100
Akina,

ID USER OFFICE start end
3 143 2 2019-06-03 10:00:00 2019-06-03 20:00:00
4 143 11 2019-06-03 09:20:00 2019-06-03 09:30:00

Добавив первую, естественно вопросов нет, добавив вторую тое проблем нет, а вот теперь редактируя первую снова, данная проверрка не проходит

SELECT COUNT(*) AS `numrows` FROM `schedule` WHERE `user` = '143' AND `office` != '2' AND DATE(start) = '2019-06-03' AND ( `start` <= '2019-06-03 10:00:00' OR `start` <= '2019-06-03 20:00:00' )
...
Рейтинг: 0 / 0
Проверить на все диапазоны времени
    #39824120
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Питерский11редактируя первую снова, данная проверрка не проходит
Сперва шла речь о добавлении новой записи и проверке пересечения с существующей. При чём тут редактирование?
При редактировании нужно ещё смотреть, не является ли редактируемая и проверяемая одной и той же записью...
...
Рейтинг: 0 / 0
Проверить на все диапазоны времени
    #39824320
motoroller1983
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Задача перед любым действием (добавление, редактирование)
проверять не попадает ли новая запись в диапазон текущих, то есть я делаю отдельный запрос, а потом на его результате либо выдаю ошибку либо выполняю действие, собственно нужна помощь в составлении запроса, который могу бы корректно проверить есть пересечение или нет.
...
Рейтинг: 0 / 0
Проверить на все диапазоны времени
    #39824747
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
motoroller1983Задача перед любым действием (добавление, редактирование)Ну будет два триггера а не один, делов-то... к тому же оба могут вызывать одну и ту же хранимую процедуру.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Проверить на все диапазоны времени
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]