1

次のような形式のXMLが少しあります。

<Data>
  <Surveys>
    <Survey id="1">
       <Answers>
         <Answer aid="1">
         <Answer aid="2">
       </Answers>
    </Survey>
    <Survey id="2">
       <Answers>
         <Answer aid="1">
         <Answer aid="2">
         <Answer aid="3">
         <Answer aid="4">
       </Answers>
    </Survey>
  </Surveys>
</Data>  

私はそのような調査のためにテーブルに挿入しています(私はこれを単純にして、扱いすぎないようにしました)

insert into survey
select T.o.value('@id', 'int'),
from @xml.nodes('/Data/Surveys/Survey')as T(o)

これは機能しています...しかし、同じ時点での調査への関連する回答を別の関連するテーブルに入れたいと思います。調査IDが回答ノード自体にないため、別の挿入stmtを作成してノードを再度使用することはできません。C#では、LINQtoXMLを使用してこれを行うことができますが、要素の解析/ループが遅くなります。

TSQLでこれを行う方法はありますか?

ありがとう、デビッド

4

1 に答える 1

0

これを試して:

select T.o.value('@id', 'int') sid,
       A.o.value('@aid', 'int') as aid 
from @xml.nodes('/Data/Surveys/Survey')as T(o)
  cross apply T.o.nodes('Answers/Answer') as A(o) 
于 2012-08-03T06:32:58.413 に答える