Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.04;
Скачать: CL | DM;

Вниз

SQL запрос   Найти похожие ветки 

 
MakNik ©   (2004-03-03 17:44) [0]

Есть таблица у которой есть поля DateBegin, DateEnd, ....
Наполнение:
 DateBegin    DateEnd
 01.01.2003    08.01.2003
 09.01.2003    20.01.2003
 21.01.2003    10.02.2003
Задача в следующем:
нужно определить есть ли в определенный период между датами "дырки" или наложения дат?
(Следующая запись должна начинаться с DateEnd+1 предыдущей записи)
Помогите, пожалуйста, написать запрос или алгоритм для определения соответствию вышеуказанным критериям!!!


 
AlexanderVasjuk   (2004-03-03 18:40) [1]

вообще-то вопрос в БД...

я бы сделал это в процедуре.
но можно и запросом.
работать будет долго.

типа того

select *
from t t1
where not exists (select * from t t2 where t2.datebeg = t1.dateend)
or exists (select * from t t3 where t3.datebeg between t1.datebeg and t1.dateend or t3.dateend between t1.datebeg and t1.dateend)

если хоть что-то вернет, значит критерий не выполняется


 
AlexanderVasjuk   (2004-03-03 18:41) [2]

вторую строка исправить
where not exists (select * from t t2 where t2.datebeg = t1.dateend + 1)


 
kaif ©   (2004-03-03 19:37) [3]

А первичный ключ имеется? Что значит "есть промежутки"? Между идущими "в каком-то смысле" подряд записями или вообще? То есть можно ли внавал наложить все промежутки на ость t и потом сказать - вот дырка?
Пересечения видимо поймать не так сложно:
SELECT *
FROM
 MYTABLE T1,
 MYTABLE T2
WHERE
 (T1.BEGIN_DATE <> T2.BEGIN_DATE AND
  T1.END_DATE <> T2.END_DATE)  /*или несовпадение первичного ключа*/
 AND
 (T2.BEGIN_DATE BETWEEN T1.BEGIN_DATE AND T1.END_DATE)

А вот дырки... Не знаю. Johnmen точно может. :)



Страницы: 1 вся ветка

Текущий архив: 2004.04.04;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.058 c
14-1078946162
Knight
2004-03-10 22:16
2004.04.04
Кто знает хороший компонент, который выводит изображение...


8-1069780816
Messir
2003-11-25 20:20
2004.04.04
Как засунуть в опр. Grid картинку и надпись поверх неё текст


1-1079693633
Opryshok
2004-03-19 13:53
2004.04.04
2 спидбаттона


3-1078924228
Anarki
2004-03-10 16:10
2004.04.04
Проблема с запросом в ADOQuery


1-1079215766
Димка
2004-03-14 01:09
2004.04.04
Принтер