我在使用SQL Server 2000中的xml显式时遇到问题(所以我不能使用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有一对多的关系,我想制作它的层次结构。
到目前为止,我似乎无法得到它,我设法获得的最接近的是table1中的所有记录,table2中的所有记录都附加到table1的最后一个元素
非常感谢任何有关建立这种关系的帮助。
-Marcin
答案 0 :(得分: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
的查询。