久久久久久久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)
主站蜘蛛池模板: 黄视频欧美 | 二区在线视频 | 一区二区精品在线 | 亚洲精品久久国产高清情趣图文 | 国产精品久久久久久吹潮 | 日韩av.com | 国产黄色在线观看 | 九九综合| 日韩久草| 亚洲国产aⅴ成人精品无吗 综合国产在线 | 男女免费在线观看视频 | 午夜视频在线观看一区二区 | 蜜桃毛片 | 欧美一区二区在线 | 人人九九精 | www.一区二区三区.com | 综合色婷婷 | 国产精品日韩欧美一区二区 | www.久久艹 | 国产精品久久久久久久久久 | aaaa网站| 99久久婷婷| 亚洲精品一区二区 | 一级一片在线观看 | 国产欧美精品一区二区 | 亚洲精品亚洲人成人网 | 欧美日韩国产在线 | 999视频在线播放 | 中文字幕视频一区二区 | 久久久久久999 | 国产高清免费 | 国产精品久久久久久久久免费 | 91视视频在线观看入口直接观看 | 国产美女高潮 | 中文字幕 国产精品 | 亚洲精品免费视频 | 亚洲三级在线 | 巨大荫蒂视频欧美另类大 | 97精品超碰一区二区三区 | 国产伦精品一区二区三区高清 | 国产乱码久久久久久 |