Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 как выявить(найти,...) несуществующий файл?  [new]
MQM
Member

Откуда:
Сообщений: 30
Имеется таблица "Т1":
файл дата создания
со001 01.01.2008
со002 02.01.2008
со003 03.01.2008
со005 10.01.2008
со007 11.01.2008

как выбрать(показать, обнаружить) несуществующие файлы(со004,со006). ?
можно ли это сделать запросом или нужно писать процедуру?
19 окт 09, 14:43    [7805704]     Ответить | Цитировать Сообщить модератору
 Re: как выявить(найти,...) несуществующий файл?  [new]
aleks2
Guest
MQM
несуществующие файлы


Несуществующие ХДЕ?
19 окт 09, 14:55    [7805806]     Ответить | Цитировать Сообщить модератору
 Re: как выявить(найти,...) несуществующий файл?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36814
Создать таблицу T2 со всеми файлами и выбрать те, которых нет в T1.
19 окт 09, 15:07    [7805912]     Ответить | Цитировать Сообщить модератору
 Re: как выявить(найти,...) несуществующий файл?  [new]
Ozzy-Osbourne
Member

Откуда: Balashikha
Сообщений: 139
автор
как выбрать(показать, обнаружить) несуществующие файлы(со004,со006). ?
если речь идёт о пропущенных суффиксах номеров ("004", "006" etc), то попробуйте так:
declare @t table(fn varchar(12), ft datetime)
insert into @t
select 'со001', '01.01.2008' union all
select 'со002', '02.01.2008' union all
select 'со003', '03.01.2008' union all
select 'со005', '10.01.2008' union all
select 'со007', '11.01.2008'
-- some more for testing:
insert into @t
select 'со015', '01.01.2008' union all
select 'со020', '02.01.2008' union all
select 'со250', '03.01.2008' union all
select 'со255', '10.01.2008' union all
select 'со700', '11.01.2008'


;with 
t as
(
select fn,ft,fv=cast(right(fn,3) as int)
from @t
)

select t1.fn,t1.ft,miss_from=right(cast(1000+isnull(max(t2.fv),0)+1 as char(4)),3),miss_to=right(cast(1000+t1.fv-1 as char(4)),3)
  from t t1
  left join t t2 on t1.fv>t2.fv
 group by t1.fn,t1.ft,t1.fv
having 1<t1.fv-isnull(max(t2.fv),0)
(PS: работает только для суффиксов от 001 до 999; для бОльших значений сами переделайте)
result:
+
fnftmiss_frommiss_to
со0052008-10-01 00:00:00.000004004
со0072008-11-01 00:00:00.000006006
со0152008-01-01 00:00:00.000008014
со0202008-02-01 00:00:00.000016019
со2502008-03-01 00:00:00.000021249
со2552008-10-01 00:00:00.000251254
со7002008-11-01 00:00:00.000256699
19 окт 09, 15:20    [7806028]     Ответить | Цитировать Сообщить модератору
 Re: как выявить(найти,...) несуществующий файл?  [new]
MQM
Member

Откуда:
Сообщений: 30
спасибо, имел иду не файлы а записи
19 окт 09, 15:28    [7806105]     Ответить | Цитировать Сообщить модератору
 Re: как выявить(найти,...) несуществующий файл?  [new]
MQM
Member

Откуда:
Сообщений: 30
Ozzy-Osbourne
автор
как выбрать(показать, обнаружить) несуществующие файлы(со004,со006). ?
если речь идёт о пропущенных суффиксах номеров ("004", "006" etc), то попробуйте так:
declare @t table(fn varchar(12), ft datetime)
insert into @t
select 'со001', '01.01.2008' union all
select 'со002', '02.01.2008' union all
select 'со003', '03.01.2008' union all
select 'со005', '10.01.2008' union all
select 'со007', '11.01.2008'
-- some more for testing:
insert into @t
select 'со015', '01.01.2008' union all
select 'со020', '02.01.2008' union all
select 'со250', '03.01.2008' union all
select 'со255', '10.01.2008' union all
select 'со700', '11.01.2008'


;with 
t as
(
select fn,ft,fv=cast(right(fn,3) as int)
from @t
)

select t1.fn,t1.ft,miss_from=right(cast(1000+isnull(max(t2.fv),0)+1 as char(4)),3),miss_to=right(cast(1000+t1.fv-1 as char(4)),3)
  from t t1
  left join t t2 on t1.fv>t2.fv
 group by t1.fn,t1.ft,t1.fv
having 1<t1.fv-isnull(max(t2.fv),0)
(PS: работает только для суффиксов от 001 до 999; для бОльших значений сами переделайте)
result:+
+
fntfttmiss_fromtmiss_to
со005t2008-10-01 00:00:00.000t004t004
со007t2008-11-01 00:00:00.000t006t006
со015t2008-01-01 00:00:00.000t008t014
со020t2008-02-01 00:00:00.000t016t019
со250t2008-03-01 00:00:00.000t021t249
со255t2008-10-01 00:00:00.000t251t254
со700t2008-11-01 00:00:00.000t256t699


а если количество записей увеличивается заново все переписывать?
19 окт 09, 16:00    [7806374]     Ответить | Цитировать Сообщить модератору
 Re: как выявить(найти,...) несуществующий файл?  [new]
мысль
Guest
с помощью with сгенерировать запрос, выдающий все записи в нужном диапазоне, а потом вычесть из них имеющиеся. работает только на sql2005+
19 окт 09, 16:07    [7806431]     Ответить | Цитировать Сообщить модератору
 Re: как выявить(найти,...) несуществующий файл?  [new]
Ozzy-Osbourne
Member

Откуда: Balashikha
Сообщений: 139
автор
если количество записей увеличивается заново все переписывать?
что Вы имеете в виду ? в приведенном фрагменте количество записей как раз УВЕЛИЧЕНО по сравнению с тем, что в стартовом сообщении.
19 окт 09, 16:14    [7806525]     Ответить | Цитировать Сообщить модератору
 Re: как выявить(найти,...) несуществующий файл?  [new]
MQM
Member

Откуда:
Сообщений: 30
все ок, запутался
19 окт 09, 17:21    [7807223]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить