簡體   English   中英

如何查詢表單父子表並將結果返回為XML?

[英]How to query form a parent and child table and return the result as XML?

我有兩張表 Customer 和 Order

客戶表有 customerId,CustomerName

訂單表有訂單 ID、客戶 ID、產品 ID

我想要的結果是一個 xml 文件

<Customers>
  <Customer>
    <CustomerId>7</CustomerId>
    <CustomerName>def</CustomerName>
    <Orders>
      <Customerorder>
          <OrderId>5</OrderId>
          <CustomerId>1</CustomerId>
          <ProductId>3</ProductId>
      </Customerorder>
      <Customerorder>
          <OrderId>5</OrderId>
          <CustomerId>1</CustomerId>
          <ProductId>3</ProductId>
      </Customerorder>
    </Orders>
  </Customer>
  <Customer>
        <CustomerId>2</CustomerId>
        <CustomerName>abc</CustomerName>
        <Orders>
            <Customerorder>
                <OrderId>5</OrderId>
                <CustomerId>1</CustomerId>
                <ProductId>3</ProductId>
            </Customerorder>
            <Customerorder>
                <OrderId>5</OrderId>
                <CustomerId>1</CustomerId>
                <ProductId>3</ProductId>
            </Customerorder>
        </Orders>
    </Customer>
 </Customers>

您在 xml 中有錯誤數據,例如 id 1 和 id 7。

這是你需要的嗎?


declare @Customer Table(CustomerID int, CustomerName varchar(50))
insert into @Customer(CustomerID, CustomerName)
Values
(1, 'def'), (2, 'abc')
select * from @Customer

declare @Order Table(OrderID int, CustomerID int, ProductID int)
insert into @Order(OrderID, CustomerID, ProductID)
Values
(5,1, 3), (6,1,4),
(4,2,4),(5,2,6)
select * from @Order


select 
      c.CustomerID
    , c.CustomerName
    , (select  
        (SELECT * FROM @Order o 
            WHERE o.CustomerID = c.CustomerID 
            FOR XML PATH('CustomerOrder'), type)
      FOR XML PATH ('Orders'), type)
From @Customer c
FOR XML PATH('Customer'), ROOT ('Customers')

在此處輸入圖片說明

暫無
暫無

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

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