1

SQL Server 2000 で for xml explicit を使用すると問題が発生します (したがって、SQL 2005/8 の新しい path() は使用できません)。

基本的に、2 つのテーブルがあり、必要な 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 対多の関係にあり、その階層を作成したいと考えています。

これまでのところ、私はそれを得ることができないようです。私が得ることができた最も近いものは、table1のすべてのレコードであり、table2のすべてのレコードがtable1の最後の要素に追加されています

この種の関係を築くための助けをいただければ幸いです。

-マルシン

4

1 に答える 1

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.

于 2010-03-02T09:31:26.357 に答える