sql - 如何查询父子表并以 XML 形式返回结果?
问题描述
我有两张表 Customer 和 Order
客户表有customerId、CustomerName
订单表有 OrderId、CustomerId、ProductId
我想要的结果是一个 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')
推荐阅读
- google-bigquery - 大查询中的指数值
- javascript - 从反应中的一组对象计算发票总额和发票数量
- stripe-payments - 条带结帐测试返回 404
- c++ - 关于在赋值中从 double 到 int 的隐式转换的标准
- javascript - 如何从我点击的元素中选择内容(使用数据属性)
- xml - 是否有任何用于 Spark 的 XML 输入的模式生成器?
- javascript - 在弹出式灯箱中更新 Swiper
- javascript - 如何在 React 中使用 ref 访问 onDrag onDrop 函数?
- javascript - 无法从 fetch 中输出数据
- c - SAME70 在 ISR 中读取外部中断极性