2010-03-02 68 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的查詢。