簡體   English   中英

Biztalk:嵌套平面文件架構

[英]Biztalk: Nested Flat File Schema

我有這兩個表,我希望從中創建一個嵌套的XML模式

我希望該架構看起來像:

<PERSON ID="1" FN="F1" LN="L1">
  <DETAIL ID="1" NUM="11"/>
  <DETAIL ID="1" NUM="12"/>
</PERSON>
<PERSON ID="2" FN="F2" LN="L2">
  <DETAIL ID="1" NUM="21"/>
  <DETAIL ID="1" NUM="22"/>
  <DETAIL ID="1" NUM="23"/>
</PERSON>

我調用一些SQL從表中獲取數據。 我嘗試過的一種方法是在“ ID”字段上使用內部聯接,另一種方法是使用存儲過程返回兩組數據,每個表一組。 我雙向遇到的問題是如何將其映射到上述結構?

我最終每條PERSON記錄得到一條DETAIL記錄(PERSON重復),或者每條PERSON記錄得到所有DETAIL記錄(ID不再匹配)。

使用FOR XML AUTO:

SELECT PERSON.ID, PERSON.FN, PERSON.LN, DETAIL.ID, DETAIL.NUM
FROM PERSON
JOIN DETAIL ON PERSON.ID = DETAIL.ID
FOR XML AUTO

使用FOR XML PATH:

SELECT p.ID '@ID', p.FN '@FN', p.LN '@LN', 
    (
        SELECT d.ID '@ID', d.NUM '@NUM'
        FROM DETAIL d
        WHERE p.ID = d.ID
        FOR XML PATH('DETAIL'), TYPE
    )
FROM PERSON p
FOR XML PATH('PERSON')

兩者都會產生這個:

<PERSON ID="1" FN="F1" LN="L1">
  <DETAIL ID="1" NUM="11" />
  <DETAIL ID="1" NUM="12" />
</PERSON>
<PERSON ID="2" FN="F2" LN="L2">
  <DETAIL ID="2" NUM="21" />
  <DETAIL ID="2" NUM="22" />
  <DETAIL ID="2" NUM="23" />
</PERSON>

如果您嘗試此sql:

SELECT
ID AS '@ID',
FN AS '@FN',
LN AS '@LN',
(
SELECT ID AS '@ID', NUM AS '@NUM' FROM Table_2 WHERE table_2.ID = dbo.Table_1.ID FOR XML PATH('DETAIL') ,TYPE 
) AS 'details'
FROM dbo.Table_1
FOR XML PATH('PERSON')

您將獲得一些xml內容,如下所示:

<PERSON ID="1" FN="F1" LN="L1">
  <details>
    <DETAIL ID="1" NUM="11" />
    <DETAIL ID="1" NUM="12" />
  </details>
</PERSON>
<PERSON ID="2" FN="F2" LN="L2">
  <details>
    <DETAIL ID="2" NUM="21" />
    <DETAIL ID="2" NUM="22" />
    <DETAIL ID="2" NUM="23" />
  </details>
</PERSON>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM