Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / [SQL]Пересечение временных интервалов / 3 сообщений из 3, страница 1 из 1
01.08.2013, 14:20
    #38351646
Я
Я
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[SQL]Пересечение временных интервалов
Есть простая табличка, состоящая их 3 полей ( например программа передач ):
Код: sql
1.
title, begin, end


т е название, начало, окончание

нужно удалить программы в табличке, которые подпадают под заданный интервал (A,B) ( т е даже часть передачи ). Достаточно ли след sql запроса ( и правилен ли он ):

Код: sql
1.
delete from table where begin between A and B or end between A and B ?
...
Рейтинг: 0 / 0
01.08.2013, 14:31
    #38351668
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[SQL]Пересечение временных интервалов
ЯЕсть простая табличка, состоящая их 3 полей ( например программа передач ):
Код: sql
1.
title, begin, end


т е название, начало, окончание

нужно удалить программы в табличке, которые подпадают под заданный интервал (A,B) ( т е даже часть передачи ). Достаточно ли след sql запроса ( и правилен ли он ):

Код: sql
1.
delete from table where begin between A and B or end between A and B ?



Запрос правильный, но логика неверна. Если интервал, когда надо удалить с 10:00 до 10:30, а передача идёт с 9:30 до 10:50, то такая передача удалена не будет. Временные интервалы пересекаются тогда, когда конечная точка одного интервала находится внутри другого:
Код: sql
1.
delete from `table` where B between `begin` and `end` or `end` between A and B


где B > A и `end` > `start`. :)
Кстати, обратные кавычки не забываем, а то Ваш запрос может с резервированными словами конфликтировать (типа begin, end, table)
...
Рейтинг: 0 / 0
01.08.2013, 22:48
    #38352229
S.G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[SQL]Пересечение временных интервалов
Я,
1.На всякий случай, посмотрите:
http://www.sql.ru/forum/450374/peresechenie-diapazonov-dat

2.Никогда не называйте поля словами, хотя бы отдаленно напоминающими резервированные слова.
Хорошая идея, названия полей составлять из двух слов:
на выбор:
broadcasttimebegin - broadcasttimeend
broadcasttime1 - broadcasttime2
bt1 - bt2
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / [SQL]Пересечение временных интервалов / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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