Я пытаюсь разобраться в SQL, XML-узлах и Cross apply, я бы подумал, что следующий код вернет 3 строки данных, но вместо этого я их получу только. я думал, что использование Cross для присоединения к запросу обратно на себя решит это для меня.Узлы SQL Server -XML, не возвращающие несколько записей
Может ли кто-нибудь сказать мне, что я делаю неправильно?
Заранее спасибо
Dan
DECLARE @XML AS XML;
SELECT @XML = ('<Deal deal_id="821">
<Application_owner>me</Application_owner>
<Deal_files>
<File>file1.doc</File>
<File>file2.pdf</File>
<File>file3.xcl</File>
</Deal_files>
</Deal>
')
select
t.n.value('@deal_id', 'int') as [ID],
f.n.value('(File)[1]','varchar(50)') as [FILENAME]
from
@XML.nodes('Deal') t(n)
cross apply
t.n.nodes('Deal_files') f(n)
'tnnodes ('Deal_files')' соответствует только один элемент, поэтому вы получите только одну строку SQL (wh ich будет содержать 3 XML-элемента/строки). – RBarryYoung