首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sql server 2000和for xml explicit

sql server 2000和for xml explicit
EN

Stack Overflow用户
提问于 2010-03-02 15:14:26
回答 1查看 858关注 0票数 1

我在SQL Server2000中使用for xml explicit时遇到了一个问题(因此我不能使用sql 2005/8中新的path()内容)

实际上,我有两个表,我想要的XML结构是

代码语言:javascript
复制
<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

EN

回答 1

Stack Overflow用户

发布于 2010-03-02 17:31:26

您的查询是否包含order by子句?在for xml explicit模式中,重要的是信息按所需的顺序出现。例如,在Northwind示例数据库中,您可以为员工区域生成嵌套XML,如下所示:

代码语言:javascript
复制
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:

代码语言:javascript
复制
<Employee EmployeeId="1" LastName="Davolio">
  <EmployeeTerritories TerritoryID="06897" />
  <EmployeeTerritories TerritoryID="19713" />
</Employee>
<Employee EmployeeId="2" LastName="Fuller">
...

要了解它是如何工作的,可以在不使用for xml explicit的情况下运行查询。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2361439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档