从多个sql表创建xml
我尝试从3个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> .....
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
(这是一个关于特性的比较)[。