Запрос связанных записей в поле xml - PullRequest
0 голосов
/ 29 августа 2018

Мне нужно запросить огромную базу данных. Для каждой строки, содержащей более ста полей, есть соответствующие записи в трех связанных таблицах. Присоединение к ним приведет к множеству записей, умноженному в десятки раз (в зависимости от количества связанных записей). Я думал о комбинировании полей из связанных таблиц в одно поле XML.

Например: Таблица 1 (основная таблица):

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

Таблица2 (одна из связанных таблиц)

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 голосов
/ 29 августа 2018

Решил сам. Предоставление желаемого решения для других:

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