查询相关记录到xml字段

时间:2018-08-29 12:13:46

标签: sql sql-server xml querying

我必须查询一个巨大的数据库。对于包含上百个字段的每一行,在三个相关表中都有相关记录。连接它们将产生十倍的记录集(取决于相关记录数)。我考虑过将相关表中的字段组合到单个xml字段中。

例如: 表1(主表):

Id        Field1        Field2    ...more fields go here
1         Value1        Value2
2         Value3        Value4

Table2(相关表之一)

Id        ParentId      Field3        Field4
1         1             Value5        Value6
2         1             Value7        Value8
3         2             Value9        Value10

我想得到以下结果:

Id        Field1       Field2      XmlField1
1         Value1       Value2      XmlValue1
2         Value3       Value4      XmlValue2

其中XmlValue1如下

<RelatedRecords>
   <RelatedRecord>
       <Field3>
           Value5
       </Field3>
       <Field4>
           Value6
       </Field4>
   </RelatedRecord>
   <RelatedRecord>
       <Field3>
           Value7
       </Field3>
       <Field4>
           Value8
       </Field4>
   </RelatedRecord>
</RelatedRecords>

XmlValue2如下

<RelatedRecords>
   <RelatedRecord>
       <Field3>
           Value
       </Field3>
       <Field4>
           Value10
       </Field4>
   </RelatedRecord>
</RelatedRecords>

如何获得所需的输出?

1 个答案:

答案 0 :(得分:2)

由我自己解决。为其他人提供所需的解决方案:

SELECT Id, 
       Field1,
       Field2,
       (
       SELECT Field3, Field4
       FROM Table2
       WHERE Table1.Id = Table2.ParentId
       FOR XML PATH('RelatedRecord'), ROOT('RelatedRecords')
       ) XmlField1
FROM Table1