2010-03-02 3 views
1

У меня есть проблема с использованием для XML в явном SQL Server 2000 (так что я не могу использовать новый путь вещей() из SQL 2005/8)SQL Server 2000 и XML явного

По существу я есть две таблицы и структура 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, и я хочу, чтобы сделать иерархию его.

До сих пор я не могу получить его, ближе всего мне удалось получить это все записи из table1, со всеми записями из table2 прилагаемых к самому последнему элементу table1

Любой помощь с установлением такого рода отношений было бы весьма полезно.

-Marcin

ответ

0

Включается ли ваш запрос в 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.