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

Откуда: Санкт-Петербург
Сообщений: 33
Доброго времени суток.
Подскажите пожалуйста, разобраться с проблемой присвоения значений элементам таблицы штатного расписания (ШР).
Есть таблица с указанием Id элемента ШР, родительского Id, названия и Id принадлежности к определнному региону - DistrictId. Во второй таблице указаны Id верхних узлов ШР с принадлежностью к региону.
Задача проставить во всех дочерних элементах ШР принадлежность к региону.

Пытаюсь сначала сделать select. Значения DistrictId выводятся только до второго уровня, дальше никак. Несколько дней мучаюсь, не могу сообразить, как привязать данные о DistrictId к дочерним элементам.


declare @StaffOrgStr table (OrgStrEntId int, OrgStrEntName nvarchar(300), OrgStrEntParentId int, DistrictId int NULL)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (1111, 'Филиал 1', 0000)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (1112, 'Дополнительный офис 11', 1111)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (11121, 'Отдел 11', 1112)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (111211, 'Группа 11', 11123)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (1113, 'Дополнительный офис 12', 1111) 
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (11131, 'Отдел 12', 1113) 
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (111311, 'Группа 12', 11131) 

insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (2111, 'Филиал 2', 0000)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (2112, 'Дополнительный офис 21', 2111)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (21121, 'Отдел 21', 2112)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (211211, 'Группа 21', 21123)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (2113, 'Дополнительный офис 22', 2111) 
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (21131, 'Отдел 22', 2113) 
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (211311, 'Группа 22', 21131) 

 
declare @StaffDisrtictAssignment table (DistrictAssignmentId int, OrgStrEntId int, DistrictId int);
insert into @StaffDisrtictAssignment (DistrictAssignmentId, OrgStrEntId, DistrictId) values (1, 1111, 1);
insert into @StaffDisrtictAssignment (DistrictAssignmentId, OrgStrEntId, DistrictId) values (2, 2111, 2);




with OrgStrOTB ([OrgStrEntId],[OrgStrEntName],[OrgStrEntParentId], Level, DistrictId)
as
(
	-- закрепленные элементы
	select fe.[OrgStrEntId],[OrgStrEntName],[OrgStrEntParentId], 0 as Level
		,(select sdasec.DistrictId from @StaffDisrtictAssignment as sdasec where sdasec.[OrgStrEntId] = fe.[OrgStrEntId]) 
		from @StaffOrgStr as fe 
		inner join @StaffDisrtictAssignment as sda
			on sda.[OrgStrEntId] = fe.[OrgStrEntId]
				
	union all	
	-- рекурсивный элемент
	select fe.[OrgStrEntId],fe.[OrgStrEntName],fe.[OrgStrEntParentId], Level + 1
		,(select sdasec.DistrictId from @StaffDisrtictAssignment as sdasec where sdasec.[OrgStrEntId] = fe.[OrgStrEntId])
		
		from @StaffOrgStr as fe 
		inner join OrgStrOTB
			on OrgStrOTB.[OrgStrEntId] = fe.[OrgStrEntParentId]
)
-- рекурсивный вызов процедуры
select sostr.[OrgStrEntId],sostr.[OrgStrEntName],sostr.[OrgStrEntParentId], Level,OrgStrOTB.DistrictId

from OrgStrOTB 
inner join @StaffOrgStr as sostr
	on OrgStrOTB.[OrgStrEntId] = sostr.[OrgStrEntParentId]

order by  [OrgStrEntId]
12 мар 14, 11:09    [15708644]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значений элементам штатного расписания через рекурсию  [new]
Italianspb
Member

Откуда: Санкт-Петербург
Сообщений: 33
Да, результат:


OrgStrEntId OrgStrEntName OrgStrEntParentId Level DistrictId
1112 Дополнительный офис 11 1111 0 1
1113 Дополнительный офис 12 1111 0 1
2112 Дополнительный офис 21 2111 0 2
2113 Дополнительный офис 22 2111 0 2
11121 Отдел 11 1112 1 NULL
11131 Отдел 12 1113 1 NULL
21121 Отдел 21 2112 1 NULL
21131 Отдел 22 2113 1 NULL
111311 Группа 12 11131 2 NULL
211311 Группа 22 21131 2 NULL
12 мар 14, 11:29    [15708838]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значений элементам штатного расписания через рекурсию  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Непонятно, что Вы называете штатным расписанием.
Вообще-то, это список должностей, привязанных к структуре предприятия.
Со своими свойствами: вилка зарплаты, подчинённость, занята/свободна и т.д.
А у Вас должностей нет, зато какие-то районы...
12 мар 14, 11:46    [15708965]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значений элементам штатного расписания через рекурсию  [new]
Italianspb
Member

Откуда: Санкт-Петербург
Сообщений: 33
iap,

Да, извините, неправильно выразился. Это часть штатного расписания, первая таблица с указанием подразделений и подчиненности, Группа входит в Отдел, Отдел в Дополнительный офис, Дополнительный офис в Филиал.
12 мар 14, 12:00    [15709097]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значений элементам штатного расписания через рекурсию  [new]
Italianspb
Member

Откуда: Санкт-Петербург
Сообщений: 33
Что-то я слишком накрутил. Вот сейчас остановился на этом:

declare @StaffOrgStr table (OrgStrEntId int, OrgStrEntName nvarchar(300), OrgStrEntParentId int, DistrictId int NULL)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (1111, 'Филиал 1', 0000)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (1112, 'Дополнительный офис 11', 1111)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (11121, 'Отдел 11', 1112)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (111211, 'Группа 11', 11123)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (1113, 'Дополнительный офис 12', 1111) 
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (11131, 'Отдел 12', 1113) 
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (111311, 'Группа 12', 11131) 

insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (2111, 'Филиал 2', 0000)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (2112, 'Дополнительный офис 21', 2111)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (21121, 'Отдел 21', 2112)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (211211, 'Группа 21', 21123)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (2113, 'Дополнительный офис 22', 2111) 
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (21131, 'Отдел 22', 2113) 
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (211311, 'Группа 22', 21131) 

 
declare @StaffDisrtictAssignment table (DistrictAssignmentId int, OrgStrEntId int, DistrictId int);
insert into @StaffDisrtictAssignment (DistrictAssignmentId, OrgStrEntId, DistrictId) values (1, 1111, 1);
insert into @StaffDisrtictAssignment (DistrictAssignmentId, OrgStrEntId, DistrictId) values (2, 2111, 2);


with OrgStrOTB ([OrgStrEntId],[OrgStrEntName],[OrgStrEntParentId], Level, DistrictId)
as
(
	-- закрепленные элементы
	select fe.[OrgStrEntId],[OrgStrEntName],[OrgStrEntParentId], 0 as Level
		,sda.DistrictId
		from @StaffOrgStr as fe 
		inner join @StaffDisrtictAssignment as sda
			on sda.[OrgStrEntId] = fe.[OrgStrEntId]

				
	union all	
	-- рекурсивный элемент
	select fe.[OrgStrEntId],fe.[OrgStrEntName],fe.[OrgStrEntParentId], Level + 1
		,(select sdasec.DistrictId from @StaffDisrtictAssignment as sdasec where sdasec.[OrgStrEntId] = fe.[OrgStrEntParentId])
		
		from @StaffOrgStr as fe 
		inner join OrgStrOTB
			on OrgStrOTB.[OrgStrEntId] = fe.[OrgStrEntParentId]
)
-- рекурсивный вызов процедуры
select sostr.[OrgStrEntId],sostr.[OrgStrEntName],sostr.[OrgStrEntParentId], Level
	,OrgStrOTB.DistrictId

from OrgStrOTB 
inner join @StaffOrgStr as sostr
	on OrgStrOTB.[OrgStrEntId] = sostr.[OrgStrEntParentId]

order by  [OrgStrEntId]


Результат:

OrgStrEntId OrgStrEntName OrgStrEntParentId Level DistrictId
1112 Дополнительный офис 11 1111 0 1
1113 Дополнительный офис 12 1111 0 1
2112 Дополнительный офис 21 2111 0 2
2113 Дополнительный офис 22 2111 0 2
11121 Отдел 11 1112 1 1
11131 Отдел 12 1113 1 1
21121 Отдел 21 2112 1 2
21131 Отдел 22 2113 1 2
111311 Группа 12 11131 2 NULL
211311 Группа 22 21131 2 NULL

Не получается получить принадлежность Групп к DistrictId.
12 мар 14, 12:06    [15709152]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значений элементам штатного расписания через рекурсию  [new]
aleks2
Guest
Ну и нафега тут рекурсия?

В цикле while пришете update, который опускает регион на ОДИН уровень вниз.
И проверяете @@rowcount.
12 мар 14, 12:33    [15709396]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значений элементам штатного расписания через рекурсию  [new]
Italianspb
Member

Откуда: Санкт-Петербург
Сообщений: 33
aleks2,

присвоить значения не проблема, вопрос в том чтобы определить DistrictId для всех подчиненных (вложенных элементов). Пока на уровне Level2 нули(((
Без рекурсии никак, хотя бы для того чтобы составить подчинение.
12 мар 14, 12:44    [15709508]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значений элементам штатного расписания через рекурсию  [new]
aleks2
Guest
Italianspb
aleks2,

присвоить значения не проблема, вопрос в том чтобы определить DistrictId для всех подчиненных (вложенных элементов). Пока на уровне Level2 нули(((
Без рекурсии никак, хотя бы для того чтобы составить подчинение.

Осподе милосердный, в каких ясельках вы программируете?
У мя есть твердая уверенность, что "DistrictId для всех подчиненных (вложенных элементов)" берется с родительского.
12 мар 14, 12:55    [15709637]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значений элементам штатного расписания через рекурсию  [new]
Italianspb
Member

Откуда: Санкт-Петербург
Сообщений: 33
aleks2,

если Вы считаете задачу тривиальной, просьба поделиться кодом.
12 мар 14, 14:24    [15710529]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значений элементам штатного расписания через рекурсию  [new]
aleks2
Guest
3Я надеюсь вы поделитесь со мной своей зряплатой?
set nocount on;
declare @StaffOrgStr table (OrgStrEntId int, OrgStrEntName nvarchar(300), OrgStrEntParentId int, DistrictId int NULL)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (1111, 'Филиал 1', 0000)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (1112, 'Дополнительный офис 11', 1111)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (11121, 'Отдел 11', 1112)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (111211, 'Группа 11', 11123)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (1113, 'Дополнительный офис 12', 1111) 
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (11131, 'Отдел 12', 1113) 
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (111311, 'Группа 12', 11131) 

insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (2111, 'Филиал 2', 0000)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (2112, 'Дополнительный офис 21', 2111)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (21121, 'Отдел 21', 2112)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (211211, 'Группа 21', 21123)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (2113, 'Дополнительный офис 22', 2111) 
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (21131, 'Отдел 22', 2113) 
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (211311, 'Группа 22', 21131) 

 
declare @StaffDisrtictAssignment table (DistrictAssignmentId int, OrgStrEntId int, DistrictId int);
insert into @StaffDisrtictAssignment (DistrictAssignmentId, OrgStrEntId, DistrictId) values (1, 1111, 1);
insert into @StaffDisrtictAssignment (DistrictAssignmentId, OrgStrEntId, DistrictId) values (2, 2111, 2);

select * from @StaffOrgStr; -- это только для сведения
select * from @StaffDisrtictAssignment; -- это только для сведения

declare @rc int;

update fe set DistrictId = sda.DistrictId
		from @StaffOrgStr as fe 
		inner join @StaffDisrtictAssignment as sda
			on sda.[OrgStrEntId] = fe.[OrgStrEntId];
			
set @rc = @@ROWCOUNT;

select * from @StaffOrgStr; -- это только для сведения

while @rc > 0
begin
 update fe set DistrictId = sda.DistrictId
		from (select * from @StaffOrgStr where DistrictId is null)  as fe 
		inner join (select * from @StaffOrgStr where DistrictId is not null) as sda
			on sda.[OrgStrEntId] = fe.OrgStrEntParentId;
			
  set @rc = @@ROWCOUNT;
end;

select * from @StaffOrgStr;
			
12 мар 14, 15:57    [15711433]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значений элементам штатного расписания через рекурсию  [new]
Italianspb
Member

Откуда: Санкт-Петербург
Сообщений: 33
aleks2,

к сожалению результат Вашей команды оставляет пустыми элементы на последнем уровне


OrgStrEntId OrgStrEntName OrgStrEntParentId DistrictId
1111 Филиал 1 0 1
1112 Дополнительный офис 11 1111 1
11121 Отдел 11 1112 1
111211 Группа 11 11123 NULL
1113 Дополнительный офис 12 1111 1
11131 Отдел 12 1113 1
111311 Группа 12 11131 1
2111 Филиал 2 0 2
2112 Дополнительный офис 21 2111 2
21121 Отдел 21 2112 2
211211 Группа 21 21123 NULL
2113 Дополнительный офис 22 2111 2
21131 Отдел 22 2113 2
211311 Группа 22 21131 2
12 мар 14, 16:29    [15711747]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значений элементам штатного расписания через рекурсию  [new]
Italianspb
Member

Откуда: Санкт-Петербург
Сообщений: 33
aleks2,

я понял Вашу мысль о присвоении начальных данных в таблице ШР. Сделал через обобщенное табличное выражение... и получил тот же результат. что и у Вас :-)

declare @StaffOrgStr table (OrgStrEntId int, OrgStrEntName nvarchar(300), OrgStrEntParentId int, DistrictId int NULL)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (1111, 'Филиал 1', 0000)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (1112, 'Дополнительный офис 11', 1111)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (11121, 'Отдел 11', 1112)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (111211, 'Группа 11', 11123)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (1113, 'Дополнительный офис 12', 1111) 
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (11131, 'Отдел 12', 1113) 
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (111311, 'Группа 12', 11131) 

insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (2111, 'Филиал 2', 0000)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (2112, 'Дополнительный офис 21', 2111)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (21121, 'Отдел 21', 2112)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (211211, 'Группа 21', 21123)
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (2113, 'Дополнительный офис 22', 2111) 
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (21131, 'Отдел 22', 2113) 
insert into @StaffOrgStr (OrgStrEntId, OrgStrEntName, OrgStrEntParentId) values (211311, 'Группа 22', 21131) 

 
declare @StaffDisrtictAssignment table (DistrictAssignmentId int, OrgStrEntId int, DistrictId int);
insert into @StaffDisrtictAssignment (DistrictAssignmentId, OrgStrEntId, DistrictId) values (1, 1111, 1);
insert into @StaffDisrtictAssignment (DistrictAssignmentId, OrgStrEntId, DistrictId) values (2, 2111, 2);

-- присваиваем значения DistrictId корневым узлам в таблице @StaffOrgStr
UPDATE sostr SET sostr.[DistrictId] = sda.[DistrictId] from @StaffOrgStr as sostr inner join @StaffDisrtictAssignment as sda on sostr.[OrgStrEntId] = sda.[OrgStrEntId] ;


with OrgStrOTB ([OrgStrEntId],[OrgStrEntName],[OrgStrEntParentId], Level, DistrictId)
as
(
	-- закрепленные элементы
	select fe.[OrgStrEntId],[OrgStrEntName],[OrgStrEntParentId], 0 as Level
		,fe.DistrictId
		from @StaffOrgStr as fe 
		inner join @StaffDisrtictAssignment as sda
			on sda.[OrgStrEntId] = fe.[OrgStrEntId]

				
	union all	
	-- рекурсивный элемент
	select fe.[OrgStrEntId],fe.[OrgStrEntName],fe.[OrgStrEntParentId], Level + 1
		,OrgStrOTB.[DistrictId]
		
		from @StaffOrgStr as fe 
		inner join OrgStrOTB
			on OrgStrOTB.[OrgStrEntId] = fe.[OrgStrEntParentId]
)
-- рекурсивный вызов процедуры
update sostr SET sostr.[DistrictId] = OrgStrOTB.[DistrictId] 
	from @StaffOrgStr as sostr
		inner join OrgStrOTB  
			on OrgStrOTB.[OrgStrEntId] = sostr.[OrgStrEntId]

select * from @StaffOrgStr


Результат:


OrgStrEntId OrgStrEntName OrgStrEntParentId DistrictId
1111 Филиал 1 0 1
1112 Дополнительный офис 11 1111 1
11121 Отдел 11 1112 1
111211 Группа 11 11123 NULL
1113 Дополнительный офис 12 1111 1
11131 Отдел 12 1113 1
111311 Группа 12 11131 1
2111 Филиал 2 0 2
2112 Дополнительный офис 21 2111 2
21121 Отдел 21 2112 2
211211 Группа 21 21123 NULL
2113 Дополнительный офис 22 2111 2
21131 Отдел 22 2113 2
211311 Группа 22 21131 2
12 мар 14, 16:42    [15711866]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значений элементам штатного расписания через рекурсию  [new]
aleks2
Guest
Разница в двух вещах
1. Сами вы ничо сделать не смогли.
2. Мой вариант приблизительно в 10-100раз быстрее.

ЗЫ. Писать говнокод и я могу.
12 мар 14, 17:19    [15712147]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значений элементам штатного расписания через рекурсию  [new]
Italianspb
Member

Откуда: Санкт-Петербург
Сообщений: 33
aleks2,

вопрос не в том, чем отличается Ваш вариант от моего. Вопрос в том, как решить задачу. Пока она, к сожалению, не решена.
1. не согласен.
2. если Вы утверждаете, пожалуй соглашусь, т.к. мой опыт мизерный.

Я тоже за эффективный код.
12 мар 14, 17:27    [15712210]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значений элементам штатного расписания через рекурсию  [new]
aleks2
Guest
Italianspb
Вопрос в том, как решить задачу. Пока она, к сожалению, не решена.


Переквалифицируйтесь в управдомы или скажите нам: откуда бедный сервер должен взять значение для этой строки?
111211 Группа 11 11123 NULL

Битву экстрасенсов не предлагать.
12 мар 14, 17:33    [15712259]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значений элементам штатного расписания через рекурсию  [new]
Italianspb
Member

Откуда: Санкт-Петербург
Сообщений: 33
aleks2,

согласен с Вами. Моя ошибка в начальных данных. Большое спасибо за помощь. Буду набираться опыта.
12 мар 14, 17:49    [15712380]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить