SQL Server 2000 и XML явный
У меня проблема с использованием явного XML в SQL Server 2000 (поэтому я не могу использовать новый путь () из SQL 2005/8)
По сути, у меня есть две таблицы и структура XML, которую я хочу иметь,
<xml>
<table_1 field1="foo" field2="foobar2" field3="foobar3">
<a_row_from_table_2 field1="goo" field2="goobar2" field3="goobar3" />
<a_row_from_table_2 field1="hoo" field2="hoobar2" field3="hoobar3" />
</table_1>
</xml>
То есть table_1 имеет отношение один-ко-многим с table_2, и я хочу сделать из него иерархию.
Пока, похоже, я не могу его получить, самое близкое, что мне удалось получить, - это все записи из таблицы1 со всеми записями из таблицы2, добавленными к самому последнему элементу таблицы1.
Любая помощь в установлении такого рода отношений будет принята с благодарностью.
-Marcin
1 ответ
Включает ли ваш запрос order by
статья? В for xml explicit
В этом режиме важно, чтобы информация отображалась в той последовательности, в которой она необходима. Например, в примере базы данных Northwind вы можете сгенерировать вложенный XML для территорий сотрудников, например:
select
1 as Tag,
Null as Parent,
e.EmployeeId as [Employee!1!EmployeeId],
e.LastName as [Employee!1!LastName],
Null as [EmployeeTerritories!2!TerritoryID]
from dbo.Employees e
union all
select 2 as Tag,
1 as Parent,
et.EmployeeId as [Employee!1!EmployeeId],
Null as [Employee!1!LastName],
et.TerritoryId as [EmployeeTerritories!2!TerritoryID]
from dbo.EmployeeTerritories et
order by [Employee!1!EmployeeId], Parent
for xml explicit
Это приводит к XML как:
<Employee EmployeeId="1" LastName="Davolio">
<EmployeeTerritories TerritoryID="06897" />
<EmployeeTerritories TerritoryID="19713" />
</Employee>
<Employee EmployeeId="2" LastName="Fuller">
...
Чтобы понять, как это работает, запустите запрос без for xml explicit
,