如何使用不同的查询输出XML

时间:2017-05-19 14:15:20

标签: sql sql-server xml

我正在努力以正确的方式输出XML。我试图用SQL Server查询生成XML文档,这给出了以下内容:

使用代码:

    SELECT Plate, tbl_veiculos.ID, Brand, Model,  Origin, Color
FROM tbl_veiculos, tbl_veiculo_spec
WHERE tbl_veiculos.ID = tbl_veiculo_spec.ID AND tbl_veiculos.ID = 1
FOR XML PATH ('Vehicle'), TYPE, ROOT('VehicleList')

结果:

    <VehicleList>
      <Vehicle>
        <Plate>34-23-nd</Plate>
        <ID>1</ID>
        <Brand>Mercedes-Benz</Brand>
        <Model>A140</Model>
        <Origin>Germany</Origin>
        <Color>Red</Color>
      </Vehicle>
    </VehicleList>

这是我需要的某种方式。当我尝试将其与其他查询输出合并时,问题就出现了。我知道这并不能解释清楚,所以我会告诉你一个我想要的编码版本。

            <VehicleList>
              <Vehicle>
                <Plate>34-23-nd</Plate>
                <ID>1</ID>
                <Brand>Mercedes-Benz</Brand>
                <Model>A140</Model>
                <SellerInfo>
                     <Name>Someone Special</Name>
                     <Street>Oxfod Court 1231</Street>
                </SellerInfo>
                <Origin>Germany</Origin>
                <Color>Red</Color>
              </Vehicle>
            </VehicleList>

<SellerInfo>来自其他表。

1 个答案:

答案 0 :(得分:3)

您可以使用以下子查询:

 SELECT Plate, tbl_veiculos.ID, Brand, Model,  
 (select Name, Street from sellerInfo where id = t1.id --use id to join sellerInfo table
  for xml Path(''), type) as SellerInfo,
 Origin, Color,
FROM tbl_veiculos t1 inner join tbl_veiculo_spec ts
on tbl_veiculos.ID = tbl_veiculo_spec.ID AND tbl_veiculos.ID = 1
FOR XML PATH ('Vehicle'), TYPE, ROOT('VehicleList')