从多个sql表创建xml

从多个sql表创建xml,sql,xml,sql-server-2008,Sql,Xml,Sql Server 2008,我尝试从3个sql表创建一个xml文件,如下所示 SELECT * FROM approval approval, diag diag, ser ser where approval.id = diag.id and approval.id = ser.id FOR XML AUTO, ELEMENTS, root('Head') 我得到的订单如下 <Head> <approval> ......... <diag> .....

我尝试从3个sql表创建一个xml文件,如下所示

SELECT * 
FROM approval approval,
diag diag,
ser ser
where approval.id = diag.id
and approval.id = ser.id
FOR XML AUTO, ELEMENTS,
root('Head')
我得到的订单如下

<Head>
  <approval>
     .........
  <diag>
     ........
  <ser>
    ........
  </ser>
  </diag>
 </approval>
<Head>

.........
........
........
我需要的o/p是

 <Head>
      <approval>
         .........
      <diag>
         ........
      </diag>
      <ser>
        ........
      </ser>
     </approval>
    <Head>

.........
........
........
如何达到同样的效果。

我得到了答案

SELECT approval.*,
(select diag.*
from diag diag 
where approval.id =diag.id
FOR XML PATH('diag'), TYPE
),
(select ser.*
from ser ser
where approval.id =ser.id
FOR XML PATH('ser'), TYPE
)
FROM approval approval,
where approval.id = 1
FOR XML PATH, ELEMENTS,
root('Head')

很高兴你找到了解决方案!一个小小的提示:您应该对XML路径使用
,这比使用
AUTO
或任何其他方法要好。请将接受检查设置为您自己的答案,以向其他用户显示此问题已结束。谢谢@Shnugo XML路径的差异是什么?我只能在两天内接受答案。我会这样做。谢谢。在
ATUO
模式下,SQL Server必须决定如何构建结构。在
PATH
模式下,这是由您完成的,并被直接解释。当您尝试将列命名为attribute时,您会看到这一点。SQL Server可以依靠您。而且:您可以使用
PATH
(这是一个关于特性的比较)[。