2010-03-02 36 views
1

我有一个问题,在SQL Server中使用FOR XML显式的(从SQL 2005/8所以我不能使用新的路径()的东西)2000的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一个一对多的关系,我想让它的一个层次。

到目前为止,我似乎无法得到它,我已经成功地得到最接近的是表1中的所有记录,从表2追加到表1

任何帮助的最后一个元素的所有记录与建立这种关系将不胜感激。

-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的查询。