Я использую SQL Server для загрузки данных в формате XML.Я использую довольно мало таблиц в реальной реализации для загрузки данных.
Поскольку проще воспроизвести добавление фиктивного файла во временные таблицы, как показано ниже
create table #T1(Id int, ItemName varchar(25))
create table #T2(ItemId int, ImagePath varchar(25))
Insert Into #T1
values (1, 'Item1'), (2, 'Item2')
Insert Into #T2
values (1, 'Path 1'), (1, 'Path 2'), (1, 'Path 3'),
(2, 'Path 4'), (2, 'Path 5')
Я пишу запрос, как показано ниже (этоупрощенная версия для воспроизведения)
SELECT
'Some title' Title,
(SELECT
(SELECT *
FROM
(SELECT
*,
(SELECT TOP 2 ImagePath AS 'href'
FROM #T2 AS Image
WHERE Image.ItemId = ItinRow.Id
FOR XML PATH('Image'), ELEMENTS, TYPE) Images
FROM
#T1 ItinRow) AS ItinItemRow
FOR XML PATH('Collections'), TYPE, ELEMENTS)
FOR XML PATH(''), TYPE, ELEMENTS)
FROM
(SELECT *
FROM #T1) ItinGroupPage
FOR XML PATH('Group'), ELEMENTS
, которая создает эту структуру XML
<Group>
<Title>Some title</Title>
<Collections>
<Id>1</Id>
<ItemName>Item1</ItemName>
<Images>
<Image>
<href>Path 1</href>
</Image>
<Image>
<href>Path 2</href>
</Image>
</Images>
</Collections>
<Collections>
<Id>2</Id>
<ItemName>Item2</ItemName>
<Images>
<Image>
<href>Path 4</href>
</Image>
<Image>
<href>Path 5</href>
</Image>
</Images>
</Collections>
</Group>
Моя проблема связана с этим узлом изображений.Я действительно хочу вывести что-то, как показано ниже, без узла Images
<Group>
<Title>Some title</Title>
<Collections>
<Id>1</Id>
<ItemName>Item1</ItemName>
<Image>
<href>Path 1</href>
</Image>
<Image>
<href>Path 2</href>
</Image>
</Collections>
<Collections>
<Id>2</Id>
<ItemName>Item2</ItemName>
<Image>
<href>Path 4</href>
</Image>
<Image>
<href>Path 5</href>
</Image>
</Collections>
</Group>
Но когда я пытаюсь удалить это из запроса, я получаю эту ошибку:
Имя столбца не былоуказано для столбца 3 «Предметов»
Есть ли способ достичь ожидаемой структуры XML?