一尘不染

连接两个表的查询的SQL Server``OR XML''输出

sql

我是SQL Server中“ FOR XML”功能的新手。我正在使用SQL Server 2012。

我有两个表,Word和Word_Expansion。

样本数据:

表格[字]:

WordOID   Word
-------   ----    
      1   PIPE
      2   WIRE

表格[Word_Expansion]:

WEOID  fk_WordOID  Word_Expansion
-----  ----------  --------------
    1          2             COAX
    2          2    SPEAKER CABLE
    3          1          CONDUIT

现在,我想生成类似以下内容的XML:

<expansion>
  <sub>WIRE</sub>
  <sub>SPEAKER CABLE</sub>
</expansion>
<expansion>
  <sub>PIPE</sub>
  <sub>CONDUIT</sub>
</expansion>

在制作XML FOR语句时,我付出了各种努力,但是似乎无法理解将这两个表混成正确的XML输出所需要做的工作。我将进一步研究XMLFOR语法,但是如果您有时间了解这一点…

有人对我应该尝试的内容有什么建议吗?


阅读 194

收藏
2021-03-08

共1个答案

一尘不染

这应该为您解决问题:

SQL:

SELECT Word Sub,      
        (      
             SELECT Word_Expansion  AS Sub   
             FROM Word_Expansion WE
             WHERE WE.fk_WordOID = W.WordOID 
             FOR XML PATH(''), type 
        )      
FROM Word W
FOR XML PATH ('Expansion')

XML输出:

<Expansion>
  <Sub>Pipe</Sub>
  <Sub>CONDUIT</Sub>
</Expansion>
<Expansion>
  <Sub>Wire</Sub>
  <Sub>COAX</Sub>
  <Sub>SPEAKER CABLE</Sub>
</Expansion>

虽然我不确定为什么要将Word.Word归类为“ Sub”?相反,它不应该是Word_Expansion的父项(应该是sub_?)。

编辑:我发现此链接在研究FOR XML和嵌套查询时非常有用嵌套FOR
XML

2021-03-08