尝试从XML中一起检索父级和子级值时遇到问题.代码如下所示,但每个父母只能检索1个孩子.如何选择父母的所有孩子?
declare @x xml;
set @x = '
    <Parent ParentID="1" ParentName="Mary">
        <Child ChildID="2" ChildName="Paul" />
        <Child ChildID="3" ChildName="Alan" />
        <Child ChildID="4" ChildName="David" />
    </Parent>
    <Parent ParentID="5" ParentName="James">
        <Child ChildID="6" ChildName="Amy" />
        <Child ChildID="7" ChildName="Julie" />
    </Parent>
';
select 
tbl.col.value('@ParentID', 'int') AS ParentID,
tbl.col.value('@ParentName', 'varchar(50)') AS ParentName,
tbl.col.value('Child[1]/@ChildID[1]', 'int') AS ChildID,
tbl.col.value('Child[1]/@ChildName[1]', 'varchar(50)') AS ChildName
from @x.nodes('/Parent') as tbl(col);
我得到以下结果,但希望父节点重复每个子节点.
ParentID   ParentName   ChildID  ChildName
1          Mary         2        Paul
5          James        6        Amy
问题是孩子[1],但我不知道如何绕过它.我试过sql-variable但是无法让它工作.理想情况下,我希望看到以下内容:
ParentID   ParentName   ChildID  ChildName
1          Mary         2        Paul
1          Mary         3        Alan
1          Mary         4        David
5          James        6        Amy
5          James        7        Julie
任何帮助将非常感激.谢谢.
select 
tbl.col.value('parent::*/@ParentID', 'int') AS ParentID,
tbl.col.value('parent::*/@ParentName', 'varchar(50)') AS ParentName,
tbl.col.value('@ChildID', 'int') AS ChildID,
tbl.col.value('@ChildName', 'varchar(50)') AS ChildName
from @x.nodes('/Parent/Child') as tbl(col);
| 归档时间: | 
 | 
| 查看次数: | 5012 次 | 
| 最近记录: |