我必须查询一个巨大的数据库。对于包含上百个字段的每一行,在三个相关表中都有相关记录。连接它们将产生十倍的记录集(取决于相关记录数)。我考虑过将相关表中的字段组合到单个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>
如何获得所需的输出?
答案 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