|
Запрос по периодам
| ☑ |
0
Михей
08.11.12
✎
01:05
|
Хеллоу.
Есть таблица:
ДатаНачала ДатаОкончания
07.11.2012 14.11.2012
30.10.2012 21.11.2012
29.10.2012 05.12.2012
Задание: Получить из нее непересекающиеся периоды запросом.
Т.е. получить такой результат.
ДатаНачала ДатаОкончания
29.10.2012 05.12.2012
Спасибо.
|
|
1
alexei366
08.11.12
✎
01:08
|
Ну типо первые 1, сортировка по первому полю убывание, по второй сортировка на возрастание
|
|
2
alexei366
08.11.12
✎
01:10
|
Ой блин туплю, придётся тебе соединять её саму на себя или агрегатные функции использовать min для первой и max для второй
|
|
3
Михей
08.11.12
✎
01:11
|
(2) пробовал так, шото не получается
|
|
4
alexei366
08.11.12
✎
01:12
|
Так ещё раз задачу напомни, всмысле не пересекающиеся?
|
|
5
Михей
08.11.12
✎
01:16
|
(4) если пронумеровать записи
ДатаНачала ДатаОкончания
1) 07.11.2012 14.11.2012
2) 30.10.2012 21.11.2012
3) 29.10.2012 05.12.2012
то 1) и 2) входят в 3) поэтому их нужно исключить из результата запроса
|
|
6
alexei366
08.11.12
✎
01:20
|
Блин так то пока на ум приходит только со вложенными запросами, типа для каждой строки делаешь вложенный запрос где считаешь количество периодов в которые входит данная строка, и в итоге выводишь только те где количество 0
|
|
7
alexei366
08.11.12
✎
01:22
|
а для бытроты надо во вложенном вообще сделать ПЕРВЫЕ 1, какая разница мы всеравно фильтруем где 0
|
|
8
Михей
08.11.12
✎
01:23
|
(6) о, вариант, сча опробую
|
|
9
Classic
08.11.12
✎
01:32
|
(6)Зачем там вложенные запросы? Обычное левое соединение по условию вложенности и ГДЕ Есть NULL
|
|
10
alexei366
08.11.12
✎
01:34
|
Ну да,наверно быстрее будет, я тож ща так подумал
|
|
11
Jaap Vduul
08.11.12
✎
01:38
|
Только соединение с самим собой исключить
|
|