将表及其子表转换为XML并返回?

时间:2016-04-01 09:11:30

标签: sql sql-server sql-server-2014

将表及其子表(最多3层深度)转换为XML并返回的正确SQL语法是什么?

这是一个带有样本表结构和数据的SQLFiddle

1 个答案:

答案 0 :(得分:1)

尝试将您的表及其子表转换为XML

SELECT  *
        ,(SELECT    *
            FROM    childtable1
            WHERE   maintable_id = maintable.id
            FOR XML PATH('childtable1'),TYPE,ELEMENTS)
        ,(SELECT    *
                    ,(SELECT * 
                        FROM    childtable3
                        WHERE   childtable2_id  =   childtable2.id
                        FOR XML PATH('childtable3'),TYPE,ELEMENTS)
            FROM    childtable2 
            WHERE   maintable_id  =   maintable.id
            FOR XML PATH('childtable2'),TYPE,ELEMENTS)
FROM    maintable 
FOR XML PATH('maintable'),ELEMENTS,ROOT('root')

此处每个子表都类似于直接主表的子查询。