|
Проверить на все диапазоны времени
|
|||
---|---|---|---|
#18+
Добрый день, есть такая задачка почему-то не получается решить: простая табличка: 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 Мы должны проверить, что данное время не занято, нашем случае новая запись не должна добавится, так как время занято ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2019, 10:19 |
|
Проверить на все диапазоны времени
|
|||
---|---|---|---|
#18+
motoroller1983Мы должны проверить, что данное время не занято, нашем случае новая запись не должна добавится, так как время занятоТриггером хотите сделать? ну так не вопрос - пишите BEFORE INSERT триггер, в нём проверяйте, что нет пересечений (количество пересечений с данными из NEW равно нулю), и при несоответствии генерите ошибку дублирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2019, 12:09 |
|
Проверить на все диапазоны времени
|
|||
---|---|---|---|
#18+
Akina, Вопрос, не про триггер, а как сделать проверку на пересечение, вот это мне не совсем не совсем понятно ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2019, 12:47 |
|
Проверить на все диапазоны времени
|
|||
---|---|---|---|
#18+
motoroller1983Akina, Вопрос, не про триггер, а как сделать проверку на пересечение, вот это мне не совсем не совсем понятнотакие вопросы не на форуме по программированию нужно задавать, а в школьном форуме по геометрии, 7-й класс, вторая четверть. Именно тогда детям объясняют, что два отрезка имеют одну и более общих точек, если каждое из их кончал не меньше каждого из начал. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2019, 14:21 |
|
Проверить на все диапазоны времени
|
|||
---|---|---|---|
#18+
Щукина Анна, Ну вот если сравнивать чтобы начало времени было меньше, то это срабатывает, когда есть только одна запись, но когда записей несколько ваш вариант уже не работает, потому что будет запись которая уже раньше. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2019, 14:41 |
|
Проверить на все диапазоны времени
|
|||
---|---|---|---|
#18+
Питерский11когда записей несколько ваш вариант уже не работает, потому что будет запись которая уже раньше.Фигню говорите, аднака... всё прекрасно работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2019, 15:00 |
|
Проверить на все диапазоны времени
|
|||
---|---|---|---|
#18+
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' ) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2019, 15:08 |
|
Проверить на все диапазоны времени
|
|||
---|---|---|---|
#18+
Питерский11редактируя первую снова, данная проверрка не проходит Сперва шла речь о добавлении новой записи и проверке пересечения с существующей. При чём тут редактирование? При редактировании нужно ещё смотреть, не является ли редактируемая и проверяемая одной и той же записью... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2019, 15:36 |
|
Проверить на все диапазоны времени
|
|||
---|---|---|---|
#18+
Akina, Задача перед любым действием (добавление, редактирование) проверять не попадает ли новая запись в диапазон текущих, то есть я делаю отдельный запрос, а потом на его результате либо выдаю ошибку либо выполняю действие, собственно нужна помощь в составлении запроса, который могу бы корректно проверить есть пересечение или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2019, 21:38 |
|
|
start [/forum/topic.php?fid=47&msg=39824071&tid=1829107]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
105ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 201ms |
0 / 0 |