久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

XML 列 - 三級層次結構 - 具有交叉應用

XML Column - three levels hierarchy - with Cross Apply(XML 列 - 三級層次結構 - 具有交叉應用)
本文介紹了XML 列 - 三級層次結構 - 具有交叉應用的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我之前的問題解決了

預期結果是:

Neal LegSeq=1 Flight=12Neal LegSeq=2 飛行=34Neal LegSeq=2 飛行=56

Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64) 2019 年 9 月 24 日 13:48:23 版權所有 (C) 2019 Microsoft Corporation Developer Edition(64 位),Windows Server 2019 Standard 10.0(內部版本 17763:)

解決方案

在第二個應用中,您希望應用到 XmlData2.xmlDoc2 中的節點.按照您編寫的方式,它會再次從根查找節點,這將應用于 XML 中的所有 Flight 元素.

DECLARE @xml XML='<預訂><姓名>尼爾</姓名><Leg seq=''1''><航班>12</航班></腿><Leg seq=''2''><航班>34</航班><航班>56</航班></腿></預訂>'選擇@xml聲明@xmlTable 表(xml文檔);插入到@xmltable 值 (@xml)--從@XmlTable中選擇xmlDoc選擇 xmlDoc.value('(//Name)[1]', 'varchar(30)') 作為乘客,XmlData2.xmlDoc2.query('.') 作為 XmlData2,XmlData2.xmlDoc2.value('./@seq', 'int') 作為 LegSeq,XmlData3.xmlDoc3.query('.') 作為 XmlData3,XmlData3.xmlDoc3.value('.', 'varchar(20)') as FlightFROM @xmlTable 作為 t交叉申請t.xmlDoc.nodes('//Leg') AS XmlData2(xmlDoc2)交叉申請XmlData2.xmlDoc2.nodes('Flight') AS XmlData3(xmlDoc3);

My prior question was solved here. Now I'm adding one more level of complexity to it - data that is nested parent, child, grandchild.

You can see and run sample here: https://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=df2766c95383d4c8c2d1f55539634341

Sample Code, where Leg1 might be the trip out, and Leg2 might be the trip back. Each leg can have one or more flights.

DECLARE @xml XML='
<Reservation>
  <Name>Neal</Name>
    <Leg seq=''1''>
      <Flight>12</Flight>
    </Leg>
    <Leg seq=''2''>
      <Flight>34</Flight>
      <Flight>56</Flight>
    </Leg>
</Reservation>'
select @xml

DECLARE @xmlTable TABLE (
    xmlDoc Xml
);
Insert into @xmltable values (@xml)
--Select xmlDoc from @XmlTable 

Select xmlDoc.value('(//Name)[1]', 'varchar(30)') as Passenger,
       XmlData2.xmlDoc2.query('.') as XmlData2,
       XmlData2.xmlDoc2.value('./@seq', 'int') as LegSeq,
       XmlData3.xmlDoc3.query('.') as XmlData3,
       XmlData3.xmlDoc3.value('.', 'varchar(20)') as Flight
FROM @xmlTable as t
     CROSS APPLY 
        t.xmlDoc.nodes('//Leg') AS XmlData2(xmlDoc2)
     CROSS APPLY 
        t.xmlDoc.nodes('//Flight') AS XmlData3(xmlDoc3)

The issue is that I'm still need 3 rows returned, but now I'm getting 6.

Expected result would be:

Neal LegSeq=1 Flight=12 
Neal LegSeq=2 Flight=34
Neal LegSeq=2 Flight=56

Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64) Sep 24 2019 13:48:23 Copyright (C) 2019 Microsoft Corporation Developer Edition (64-bit) on Windows Server 2019 Standard 10.0 (Build 17763: )

解決方案

In the second apply, you want to be applying to the nodes from XmlData2.xmlDoc2. The way you have it written, it looks for nodes from the root again, which will apply to all Flight elements in the XML.

DECLARE @xml XML='
<Reservation>
  <Name>Neal</Name>
    <Leg seq=''1''>
      <Flight>12</Flight>
    </Leg>
    <Leg seq=''2''>
      <Flight>34</Flight>
      <Flight>56</Flight>
    </Leg>
</Reservation>'
select @xml

DECLARE @xmlTable TABLE (
    xmlDoc Xml
);
Insert into @xmltable values (@xml)
--Select xmlDoc from @XmlTable 

Select xmlDoc.value('(//Name)[1]', 'varchar(30)') as Passenger,
       XmlData2.xmlDoc2.query('.') as XmlData2,
       XmlData2.xmlDoc2.value('./@seq', 'int') as LegSeq,
       XmlData3.xmlDoc3.query('.') as XmlData3,
       XmlData3.xmlDoc3.value('.', 'varchar(20)') as Flight
FROM @xmlTable as t
     CROSS APPLY 
        t.xmlDoc.nodes('//Leg') AS XmlData2(xmlDoc2)
     CROSS APPLY 
        XmlData2.xmlDoc2.nodes('Flight') AS XmlData3(xmlDoc3);

這篇關于XML 列 - 三級層次結構 - 具有交叉應用的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Modify Existing decimal places info(修改現有小數位信息)
The correlation name #39;CONVERT#39; is specified multiple times(多次指定相關名稱“CONVERT)
T-SQL left join not returning null columns(T-SQL 左連接不返回空列)
remove duplicates from comma or pipeline operator string(從逗號或管道運算符字符串中刪除重復項)
Change an iterative query to a relational set-based query(將迭代查詢更改為基于關系集的查詢)
concatenate a zero onto sql server select value shows 4 digits still and not 5(將零連接到 sql server 選擇值仍然顯示 4 位而不是 5)
主站蜘蛛池模板: 精品欧美一区二区三区久久久小说 | jizz视频 | 国产特级毛片aaaaaa喷潮 | 国产高清在线 | 欧美日韩网站 | 色姑娘综合网 | 国产毛片久久久 | av网站免费在线观看 | 成人激情视频在线观看 | 国产精成人| 久久高清 | 日韩一级| 99久久国产| 国产精品国产三级国产aⅴ浪潮 | 久久久91精品国产一区二区三区 | 免费一级片 | 中文字幕 在线观看 | 欧美日韩成人在线观看 | 久久久久国产一区二区三区四区 | 97精品国产| 久久久久久久久综合 | 羞羞视频免费观看 | 国产午夜精品久久久 | 国产精品一区一区三区 | 久草热在线| 欧美一区二区三区国产 | 亚洲男人天堂 | 亚洲人成人一区二区在线观看 | 国产午夜精品久久久久 | 欧美一级二级在线观看 | 国产精品爱久久久久久久 | 99久久久久国产精品免费 | 精品视频在线免费观看 | 久久99深爱久久99精品 | 欧美在线一区二区三区 | 麻豆av网| 成人一级片在线观看 | 久久在看 | 久久国产精品免费一区二区三区 | 日本在线网址 | 欧美精品网 |