Попытка написать запрос SQL Server 2008 XML.Я упростил мой пример здесь, но учитывая эти данные:
create table #parentinfo (name varchar(50), city varchar(50), state varchar(50))
insert #parentinfo values ('joe', 'yonkers', 'ny')
insert #parentinfo values ('sue', 'sacremento', 'ca')
-- parentname is foreign key to name field in #parentinfo
create table #childinfo (parentname varchar(50), childxml xml)
insert #childinfo values ('joe', '<child>mary</child><child>ben</child>')
insert #childinfo values ('sue', '<child>sally</child><child>roger</child>')
Мне нужно вывести XML, который выглядит следующим образом:
<parentinfo>
<parent>
<name>joe</name>
<city>yonkers</city>
<state>ny</state>
<children>
<child>mary</child>
<child>ben</child>
</children>
</parent>
<parent>
<name>sue</name>
<city>sacremento</city>
<state>ca</state>
<children>
<child>sally</child>
<child>roger</child>
</children>
</parent>
</parentinfo>
Этот запрос делает это:
select name,
city,
state,
(select childxml
from #childinfo c
where c.parentname = p.name
--for xml auto, type, elements
) as 'children'
from #parentinfo p
group by name, city, state
for xml path('parent')
Однако у меня возникают проблемы, когда у одного из родителей есть дополнительная строка в таблице childinfo.Добавьте эту строку в таблицу:
insert #childinfo values ('joe', '<child>chucky</child><child>pebbles</child>')
И мой запрос разрывается, говоря, что подзапрос возвращает более 1 значения.Мне нужно справиться с этим сценарием.Кто-нибудь знает, как решить?
Спасибо.