Возможно ли реализовать запросом следующее? | |
---|---|
Аркадий Автор Сообщений: 252 Откуда: Санкт-Петербург Дата регистрации: 30.11.2005 |
Здравствуйте!
Возможно ли реализовать запросом SQL Server следующее: Есть таблица с занятыми промежутками времени, например, 900 1030 1115 1125 1310 1405 и т.д. В реальной жизни идут не подряд Необходимо получить таблицу со свободными промежутками 1030 1115 1125 1310 и т.д. |
Re: Возможно ли реализовать запросом следующее? | |
---|---|
Mitchman Сообщений: 9978 Откуда: Николаев Дата регистрации: 24.05.2002 |
------------------ - «свидомые украинцы озабочены не столько созданием украинской культуры, сколько уничтожением русской» - Олесь Бузина |
Re: Возможно ли реализовать запросом следующее? | |
---|---|
Аркадий Автор Сообщений: 252 Откуда: Санкт-Петербург Дата регистрации: 30.11.2005 |
Большое спасибо!
|
Re: Возможно ли реализовать запросом следующее? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
На оракле разница (для 10000 записей) составляет 15 секунд против 0.047 секунды ------------------ WBR, Igor |
Re: Возможно ли реализовать запросом следующее? | |
---|---|
Аркадий Автор Сообщений: 252 Откуда: Санкт-Петербург Дата регистрации: 30.11.2005 |
К сожалению, для SQL Server такой синтаксис не подходит. Буду счастлив, если кто-нибудь переведёт на этот язык.
|
Re: Возможно ли реализовать запросом следующее? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Эмуляция для MSSQL
www.rafael-salas.com По похожему принципу (используя RECNO в подзапросах для реализации соединения 1-к-1 а не 1-к-куча+группировка) можно и для фокса "оптимальный" вариант запроса сделать (не требующий ужасного полу-картезианского самосоединения таблицы). Насколько я помню, leonid где-то на форуме уже публиковал реализацию. Впрочем, тебе это будет интересно лишь теоретически, в отличие от вышеприведенной ссылки Да, не упоминал явно, ибо это очевидно, ВСЕ подобные варианты предполагают наличие весьма строгих ограничений по данным - например не должно быть никаких "пересечений" временных интервалов и дубликатов, не должно быть "перевёрнутых" интервалов (где дата окончания прописана меньше чем дата начала)... Ну и отдельно решается чисто "практический" вопрос - нужно ли включать в ответ "открытые" выборки - т.е. от "начала времён" до начала первого интервала и от окончания последнего интервала до "конца света" ------------------ WBR, Igor |
Re: Возможно ли реализовать запросом следующее? | |
---|---|
Влад Колосов Сообщений: 22664 Откуда: Ростов-на-Дону Дата регистрации: 05.05.2005 |
MS SQL
select identity(int,1,1) id, f1, f2 into #tbl1 from tbl1 order by f1 select t1.f2, t2.f1 from #tbl1 t1 inner join #tbl1 t2 on t1.id=t2.id+1 ------------------ Совершенство - это не тогда, когда нельзя ничего прибавить, а тогда, когда нечего убавить. Исправлено 1 раз(а). Последнее : Влад Колосов, 24.01.12 13:44 |
Re: Возможно ли реализовать запросом следующее? | |
---|---|
Аркадий Автор Сообщений: 252 Откуда: Санкт-Петербург Дата регистрации: 30.11.2005 |
Ну да, все интервалы в пределах рабочего дня и границы проверяются довольно легко, остальные проверки - на этапе ввода.
Спасибо, буду пробовать. |
Re: Возможно ли реализовать запросом следующее? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
По ссылке чуть более "общий" вариант - использующий ROW_NUMBER() OVER ... с возможностью считать "по группам" и CTE - чтобы "одним запросом" - без временных таблиц.
------------------ WBR, Igor |
Re: Возможно ли реализовать запросом следующее? | |
---|---|
Аркадий Автор Сообщений: 252 Откуда: Санкт-Петербург Дата регистрации: 30.11.2005 |
Признаться, у меня SQL Server 2000, но направление действий понятно.
|
Re: Возможно ли реализовать запросом следующее? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
|
Re: Возможно ли реализовать запросом следующее? | |
---|---|
Аркадий Автор Сообщений: 252 Откуда: Санкт-Петербург Дата регистрации: 30.11.2005 |
На покупку нового продукта, скорее всего, это не повлияет.
|
© 2000-2024 Fox Club  |