【发布时间】:2012-01-18 12:26:57
【问题描述】:
对于包含 3 个表的数据库:
- 公司
- 部门
- EmployeeInDepartment
我想要一个如下的xml:
<Companies>
<Company>
<CompanyName></CompanyName>
<CompanyId></CompanyId>
<..></..>
<Departments>
<Name></Name>
<..></..>
<Employees>
<Employee>
<FirstName></FirstName>
<LastName></LastName>
.. .. ..
</Employee>
.. .. ..
</Employees>
</Departments>
.. .. ..
</Company>
.. .. ..
</Companies>
在公司重复(标签)的地方,公司内部的部门在重复(标签),部门内部的员工在重复(标签)通过重复我的意思是这些元素的数量不止一个,而不是数据。
关系
-
Company和Department通过Department表中的FK相关联,该表链接到Company表中的CompanyId。 -
Department和EmployeeInDepartment通过EmployeeInDepartment表中的“FK”关联到Department表中的DepartmentId。
查询:
在 PUBS 数据库上执行以下操作并检查 xml,它将有多个 id 为 10 的作业
select jobs.job_id 'JobId',
job_desc 'Desc',
(
select emp_id 'EmployeeId',fname 'FirstName',lname 'LastName' from employee where job_id = jobs.job_id for xml path('Emploees'),type
)
from jobs
inner join
employee on jobs.job_id = employee.job_id
for xml path('employees')
【问题讨论】:
-
@MikaelEriksson 嗨,mikael,是的,我正在使用
for xml path模式,只是公司的部门没有按顺序排列(companyid = 1 的 3 条第一条记录,接下来是公司 id 2,接下来是公司 id 1) 所以当我运行查询时,我会得到 2 个具有相同公司 id 的公司标签。 -
如果您可以发布您的查询,将会很有帮助。
-
@MikaelEriksson 我当然可以。抱歉,该图将在此过程中提供更多帮助。
-
您的查询和您遇到的问题的描述会将其变成一个问题。现在看起来更像是“有人可以帮我做这件事吗”:)。
标签: xml sql-server-2005 nested for-xml