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

Откуда:
Сообщений: 9
Доброго времени суток!

Имеется таблица с полями id, parent_id, name, type

Нужно чтобы хранимая процедура возвращала результат в XML в таком виде:

<Office id = "1" name = "Головной офис" type = "g">
	<RegionBranch id = "2" name = "1 региональный офис" type = "r">
		<LocalBranch id = "5" name = "1 местный офис" type = "l">	
			<MobileBranch  id = "10" name = "1 мобильный офис" type = "m">
			</MobileBranch>	
			<MobileBranch  id = "11" name = "2 мобильный офис" type = "m">
			</MobileBranch>	
		</LocalBranch>
		<LocalBranch id = "6" name = "2 местный офис" type = "l">	
			<MobileBranch  id = "12" name = "1 мобильный офис" type = "m">
			</MobileBranch>	
		</LocalBranch>
	</RegionBranch>
	<RegionBranch id = "3" name = "2 региональный офис" type = "r">
		<LocalBranch id = "7" name = "1 местный офис" type = "l">	
			<MobileBranch  id = "13" name = "1 мобильный офис" type = "m">
			</MobileBranch>	
		</LocalBranch>
	</RegionBranch>
	<RegionBranch id = "4" name = "3 региональный офис" type = "r">
		<LocalBranch id = "8" name = "1 местный офис" type = "l">	
			<MobileBranch  id = "14" name = "1 мобильный офис" type = "m">
			</MobileBranch>				
		</LocalBranch>
		<LocalBranch id = "9" name = "2 местный офис" type = "l">	
			<MobileBranch  id = "15" name = "1 мобильный офис" type = "m">
			</MobileBranch>	
			<MobileBranch  id = "16" name = "2 мобильный офис" type = "m">
			</MobileBranch>				
		</LocalBranch>
	</RegionBranch>
 </Office>  


Буду рад любой помощи в решении этой задачи.
27 мар 12, 11:25    [12319030]     Ответить | Цитировать Сообщить модератору
 Re: Как получить XML из таблицы  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
BankR,
Ну если фиксированы type,то можно по простому
+

declare @t table
  (
    id int
  , parent_id int
  , name varchar(10)
  , type char(1)
  )
insert  into @t
        ( id, parent_id, name, type )
values  ( 1, null, 'root', 'g' )
,       ( 2, 1, '12', 'l' )
,       ( 3, 2, '13', 'm' )
,       ( 4, 2, '14', 'm' )
,       ( 5, null, 'root', 'g' )
,       ( 6, 5, 'xzcxzc2', 'l' )
,       ( 7, 6, 'sfd222', 'm' )
,       ( 8, 6, 'sdf24', 'm' )

       
        
select  *
from    @t Office
left outer join @t RegionBranch on Office.id = RegionBranch.parent_id
                                   and RegionBranch.type = 'l'
left outer  join @t MobileBranch on RegionBranch.id = MobileBranch.parent_id
                                    and MobileBranch.type = 'm'
where   Office.type = 'g'
for     xml auto

27 мар 12, 12:14    [12319404]     Ответить | Цитировать Сообщить модератору
 Re: Как получить XML из таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104751
BankR
Имеется таблица с полями id, parent_id,

Дерево неограниченной вложенности ?
27 мар 12, 12:20    [12319450]     Ответить | Цитировать Сообщить модератору
 Re: Как получить XML из таблицы  [new]
BankR
Member

Откуда:
Сообщений: 9
Спасибо огромное denis2710. Все получилось.
28 мар 12, 05:26    [12324528]     Ответить | Цитировать Сообщить модератору
 Re: Как получить XML из таблицы  [new]
BankR
Member

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

Ограниченной. Максимум 5.
28 мар 12, 05:27    [12324529]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить