Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Требуется помощь разделить файл с запросами  [new]
Michail000
Member

Откуда: Нововоронеж
Сообщений: 25
Помогите грамотно разделить файл с запросами. По возможности исправить не правильные операции. Заранее благодарен.

К сообщению приложен файл (Delete.sql - 10Kb) cкачать
3 фев 14, 08:40    [15508349]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь разделить файл с запросами  [new]
Michail000
Member

Откуда: Нововоронеж
Сообщений: 25
Боюсь не правильными действиями убить базу
3 фев 14, 08:42    [15508358]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь разделить файл с запросами  [new]
Michail000
Member

Откуда: Нововоронеж
Сообщений: 25
Требуется удалить людей которые не ходили больше 2 месяцев, корме конкретных организаций.
3 фев 14, 09:56    [15508516]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь разделить файл с запросами  [new]
Michail000
Member

Откуда: Нововоронеж
Сообщений: 25
SET ANSI_NULLS OFF

if not exists (select * from sys.indexes where [name] = '_IDX_pLogData_ZReserv_TimeVal') 
	create index _IDX_pLogData_ZReserv_TimeVal on [pLogData]([ZReserv],[TimeVal])
if not exists (select * from sys.indexes where [name] = '_IDX_pLogData_HozOrgan_TimeVal') 
	create index _IDX_pLogData_HozOrgan_TimeVal on [pLogData]([Hozorgan],[TimeVal])

if exists (select * from [tempdb].[dbo].[sysobjects] where xtype = 'U' and id = object_id(N'tempdb..#t'))
	drop table #t
create table #t (id int)
insert into #t select [ID] from [PDivision] where Name like 'ОАО Атомэнергопроект%' -- если эту строку закоментить, то 'энергопроекты' тоже попадут под замес

begin tran

-- Чуваки, которые вообще никогда не ходили:
delete from [pList] where [Status] != 1 and [ID] not in 
 (select distinct [HozOrgan] from [pLogData]) and [Section] not in 
  (select ID from #t)
select '1) Удалено чуваков: '+cast(@@ROWCOUNT as varchar)
-- Карты, по которым вообще никогда не ходили:
delete from [pMark] where [Gtype] != 1 and [ID] not in 
 (select distinct [Zreserv] from [pLogData]) and [Owner] not in 
 (select [ID] from [pList] where [Section] in (select ID from #t))
select '2) Удалено карт: '+cast(@@ROWCOUNT as varchar)

declare @m as int;
select @m = 2

-- Чуваки, которые не ходили больше @m месяцев:
delete from [pList] where [Status] != 1 and [id] in 
 (select [HozOrgan] from [pLogData] group by [HozOrgan] having MAX([TimeVal]) < DATEADD(mm,-@m,GETDATE())) and [Section] not in 
 (select ID from #t)
select '3) Удалено чуваков: '+cast(@@ROWCOUNT as varchar)
-- Карты, по которым не ходили больше @m месяцев:
delete from [pMark] where [Gtype] != 1 and [id] in 
 (select [ZReserv] from [pLogData] group by [ZReserv] having MAX([TimeVal]) < DATEADD(mm,-@m,GETDATE())) and [Owner] not in 
 (select id from [pList] where [Section] in (select ID from #t))
select '4) Удалено карт: '+cast(@@ROWCOUNT as varchar)

--rollback tran -- если что-то не то удалилось
--commit tran -- если все ок
go


Сообщение было отредактировано: 3 фев 14, 10:09
3 фев 14, 10:02    [15508535]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь разделить файл с запросами  [new]
Glory
Member

Откуда:
Сообщений: 104751
Michail000
По возможности исправить не правильные операции

А какие критерии "неправильности" ?
Michail000
Боюсь не правильными действиями убить базу

У вас в начале есть begin tran. Если вы не сделаете commit tran, то удаления будут отменены
3 фев 14, 10:23    [15508607]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь разделить файл с запросами  [new]
Michail000
Member

Откуда: Нововоронеж
Сообщений: 25
Glory
Michail000
По возможности исправить не правильные операции

А какие критерии "неправильности" ?
Michail000
Боюсь не правильными действиями убить базу

У вас в начале есть begin tran. Если вы не сделаете commit tran, то удаления будут отменены


Нужно удалить людей, которые не ходили больше двух месяцев, кроме конкретных организаций.
3 фев 14, 10:27    [15508630]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь разделить файл с запросами  [new]
Glory
Member

Откуда:
Сообщений: 104751
Michail000
Нужно удалить людей, которые не ходили больше двух месяцев, кроме конкретных организаций.

Напишите сначала select-ы, которые выберут "людей, которые не ходили больше двух месяцев, кроме конкретных организаций."
Потом замените select на delete
3 фев 14, 10:28    [15508636]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь разделить файл с запросами  [new]
Michail000
Member

Откуда: Нововоронеж
Сообщений: 25
[SRC sql][/SRC]Glory,

if not exists (select * from sys.indexes where [name] = '_IDX_pLogData_ZReserv_TimeVal')
create index _IDX_pLogData_ZReserv_TimeVal on [pLogData]([ZReserv],[TimeVal])
if not exists (select * from sys.indexes where [name] = '_IDX_pLogData_HozOrgan_TimeVal')
create index _IDX_pLogData_HozOrgan_TimeVal on [pLogData]([Hozorgan],[TimeVal])

if exists (select * from [tempdb].[dbo].[sysobjects] where xtype = 'U' and id = object_id(N'tempdb..#t'))
drop table #t
create table #t (id int)
insert into #t select [ID] from [PDivision] where Name like 'ОАО Атомэнергопроект%' or Name LIKE 'ФСБ%' or Name LIKE 'НВ АЭС%' or Name LIKE '27 ОВД%' -- если эту строку закоментить, то 'энергопроекты' тоже попадут под замес

begin tran

declare @m as int;
select @m = 2

-- Чуваки, которые не ходили больше @m месяцев:
delete from [pList] where [Status] != 1 and [id] in
(select [HozOrgan] from [pLogData] group by [HozOrgan] having MAX([TimeVal]) < DATEADD(mm,-@m,GETDATE())) and [Section] not in
(select ID from #t) and [ID] not in (select [Owner] from [pMark] where [Config] = 128)
select '3) Удалено чуваков: '+cast(@@ROWCOUNT as varchar)

-- Карты, по которым не ходили больше @m месяцев:
delete from [pMark] where [Config] != 128 and [Gtype] != 1 and [id] in
(select [ZReserv] from [pLogData] group by [ZReserv] having MAX([TimeVal]) < DATEADD(mm,-@m,GETDATE())) and [Owner] not in
(select id from [pList] where [Section] in (select ID from #t))
select '4) Удалено карт: '+cast(@@ROWCOUNT as varchar)

delete from [pMark] where [Owner] not in (select [ID] from [pList])

rollback tran -- если что-то не то удалилось
commit tran -- если все ок
go

delete from [pMark] where [Owner] not in (select [ID] from [pList])
3 фев 14, 10:45    [15508731]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь разделить файл с запросами  [new]
Michail000
Member

Откуда: Нововоронеж
Сообщений: 25
if not exists (select * from sys.indexes where [name] = '_IDX_pLogData_ZReserv_TimeVal') 
create index _IDX_pLogData_ZReserv_TimeVal on [pLogData]([ZReserv],[TimeVal])
if not exists (select * from sys.indexes where [name] = '_IDX_pLogData_HozOrgan_TimeVal') 
create index _IDX_pLogData_HozOrgan_TimeVal on [pLogData]([Hozorgan],[TimeVal])

if exists (select * from [tempdb].[dbo].[sysobjects] where xtype = 'U' and id = object_id(N'tempdb..#t'))
drop table #t
create table #t (id int)
insert into #t select [ID] from [PDivision] where Name like 'ОАО Атомэнергопроект%' or Name LIKE 'ФСБ%' or Name LIKE 'НВ АЭС%' or Name LIKE '27 ОВД%' -- если эту строку закоментить, то 'энергопроекты' тоже попадут под замес

begin tran

declare @m as int;
select @m = 2

-- Чуваки, которые не ходили больше @m месяцев:
delete from [pList] where [Status] != 1 and [id] in 
(select [HozOrgan] from [pLogData] group by [HozOrgan] having MAX([TimeVal]) < DATEADD(mm,-@m,GETDATE())) and [Section] not in 
(select ID from #t) and [ID] not in (select [Owner] from [pMark] where [Config] = 128)
select '3) Удалено чуваков: '+cast(@@ROWCOUNT as varchar)

-- Карты, по которым не ходили больше @m месяцев:
delete from [pMark] where [Config] != 128 and [Gtype] != 1 and [id] in 
(select [ZReserv] from [pLogData] group by [ZReserv] having MAX([TimeVal]) < DATEADD(mm,-@m,GETDATE())) and [Owner] not in 
(select id from [pList] where [Section] in (select ID from #t))
select '4) Удалено карт: '+cast(@@ROWCOUNT as varchar)

delete from [pMark] where [Owner] not in (select [ID] from [pList])

rollback tran -- если что-то не то удалилось
commit tran -- если все ок
go

delete from [pMark] where [Owner] not in (select [ID] from [pList])
3 фев 14, 11:15    [15508913]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь разделить файл с запросами  [new]
Glory
Member

Откуда:
Сообщений: 104751
А чем смылс публикования одного и того же скрипта много раз ?
3 фев 14, 11:28    [15509014]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь разделить файл с запросами  [new]
Michail000
Member

Откуда: Нововоронеж
Сообщений: 25
Glory
А чем смылс публикования одного и того же скрипта много раз ?


поспешил, не выбрал выделение исходников
3 фев 14, 11:30    [15509022]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь разделить файл с запросами  [new]
Glory
Member

Откуда:
Сообщений: 104751
Michail000
Glory
А чем смылс публикования одного и того же скрипта много раз ?


поспешил, не выбрал выделение исходников

Вы опубликовали ваш скрипт 3 раза, не считая аттачмента в первом сообщении
3 фев 14, 11:32    [15509042]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь разделить файл с запросами  [new]
Michail000
Member

Откуда: Нововоронеж
Сообщений: 25
Glory,

Подправил последний скрипт, проверьте пожалуйста.
3 фев 14, 11:47    [15509134]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь разделить файл с запросами  [new]
Glory
Member

Откуда:
Сообщений: 104751
Michail000
Glory,

Подправил последний скрипт, проверьте пожалуйста.

Типа как ? Приехать к вам и запустить его на вашей базе ?
3 фев 14, 11:48    [15509141]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь разделить файл с запросами  [new]
Michail000
Member

Откуда: Нововоронеж
Сообщений: 25
Glory
Michail000
Glory,

Подправил последний скрипт, проверьте пожалуйста.

Типа как ? Приехать к вам и запустить его на вашей базе ?


хотябы посмотреть где что не правильно
3 фев 14, 11:55    [15509192]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь разделить файл с запросами  [new]
Glory
Member

Откуда:
Сообщений: 104751
Michail000
Glory
пропущено...

Типа как ? Приехать к вам и запустить его на вашей базе ?


хотябы посмотреть где что не правильно

Вот
rollback tran -- если что-то не то удалилось
commit tran -- если все ок

нельзя сразу отменить и подтвердить транзакцию
3 фев 14, 11:57    [15509206]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь разделить файл с запросами  [new]
Добрый Э - Эх
Guest
Michail000,

Ошибка в 17-й строке. Правильный ответ - 42.

З.Ы.
Глори, сорри за офтоп, но не выдержал. :)
3 фев 14, 11:59    [15509217]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь разделить файл с запросами  [new]
Michail000
Member

Откуда: Нововоронеж
Сообщений: 25
insert into #t select [ID] from [PDivision] where Name like 'ОАО Атомэнергопроект%' or Name LIKE 'ФСБ%' or Name LIKE 'НВ АЭС%' or Name LIKE '27 ОВД%'


в этой строке мы указываем те организации из которых не нужно удалять пропуска?
3 фев 14, 13:03    [15509730]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь разделить файл с запросами  [new]
Glory
Member

Откуда:
Сообщений: 104751
Michail000
в этой строке мы указываем те организации из которых не нужно удалять пропуска?

Вот откуда другим могут быть известны "те организации, из которых не нужно удалять пропуска" ?
3 фев 14, 13:05    [15509756]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь разделить файл с запросами  [new]
Michail000
Member

Откуда: Нововоронеж
Сообщений: 25
Glory
Michail000
в этой строке мы указываем те организации из которых не нужно удалять пропуска?

Вот откуда другим могут быть известны "те организации, из которых не нужно удалять пропуска" ?


в таблице pdvision столбцец [id] содержит названия организаций
3 фев 14, 13:12    [15509815]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь разделить файл с запросами  [new]
Glory
Member

Откуда:
Сообщений: 104751
Michail000
в таблице pdvision столбцец [id] содержит названия организаций

Круто. Я лично считаю, что нужно удалить пропуска всех организаций. Нечего держать "любимчиков".
3 фев 14, 13:14    [15509829]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь разделить файл с запросами  [new]
Michail000
Member

Откуда: Нововоронеж
Сообщений: 25
столбец name содержит название организаций
3 фев 14, 13:15    [15509832]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь разделить файл с запросами  [new]
Michail000
Member

Откуда: Нововоронеж
Сообщений: 25
Glory
Michail000
в таблице pdvision столбцец [id] содержит названия организаций

Круто. Я лично считаю, что нужно удалить пропуска всех организаций. Нечего держать "любимчиков".


начальнику нужно оставить "любимчиков".
3 фев 14, 13:21    [15509869]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь разделить файл с запросами  [new]
Glory
Member

Откуда:
Сообщений: 104751
Michail000
столбец name содержит название организаций

И все должны знать "те организации, из которых не нужно удалять пропуска" ?
Узнать их список, считав напрямую из вашего мозга ?
Или проникнув в контору, взломать сейф с приказами ?
Или отловить и пытать секретаршу, печатавшую список организаций ?
3 фев 14, 13:21    [15509870]     Ответить | Цитировать Сообщить модератору
 Re: Требуется помощь разделить файл с запросами  [new]
Glory
Member

Откуда:
Сообщений: 104751
Michail000
Glory
пропущено...

Круто. Я лично считаю, что нужно удалить пропуска всех организаций. Нечего держать "любимчиков".


начальнику нужно оставить "любимчиков".

Ну так обратитесь к начальнику за утверждением списка организаций
3 фев 14, 13:22    [15509874]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить