hlc*_*123 5 xml t-sql sql-server
采用以下TSQL
SELECT
o.id as '@id',
(SELECT
op.id as '@orderid'
FROM
Orders o
INNER JOIN
OrderParts op ON o.id = op.orderId
FOR XML PATH ('orderpart'), TYPE)
FROM
Orders o
FOR XML PATH ('order'), ROOT('application')
Run Code Online (Sandbox Code Playgroud)
从这些表生成.
命令
Id type
----------------
1 Pending
2 Active
Run Code Online (Sandbox Code Playgroud)
订购零件
id orderid
-------------
1 1
2 1
3 3
4 2
Run Code Online (Sandbox Code Playgroud)
它生成这个XML
<application>
<order id="1">
<orderpart orderid="1" />
<orderpart orderid="2" />
<orderpart orderid="3" />
<orderpart orderid="4" />
</order>
<order id="2">
<orderpart orderid="1" />
<orderpart orderid="2" />
<orderpart orderid="3" />
<orderpart orderid="4" />
</order>
</application>
Run Code Online (Sandbox Code Playgroud)
如何在订单和订单部分周围使用TSQL添加外部复数标签,使其如下所示?
<application>
<orders>
<order id="1">
<orderparts>
<orderpart orderid="1" />
<orderpart orderid="2" />
<orderpart orderid="3" />
<orderpart orderid="4" />
</orderparts>
</order>
<order id="2">
<orderparts>
<orderpart orderid="1" />
<orderpart orderid="2" />
<orderpart orderid="3" />
<orderpart orderid="4" />
</orderparts>
</order>
</orders>
</application>
Run Code Online (Sandbox Code Playgroud)
谢谢!
SELECT
(
SELECT o.id AS '@id',
(
SELECT op.id as '@orderid'
FROM OrderParts op
WHERE op.orderID = o.ID
FOR XML PATH ('orderpart'), TYPE
) AS 'OrderParts'
FROM Orders o
FOR XML PATH ('order'),TYPE
)
FOR XML PATH ('orders'),ROOT('application')
Run Code Online (Sandbox Code Playgroud)