当前位置: 代码迷 >> Sql Server >> SQL大神请进,很需要你们的帮忙,多谢啦
  详细解决方案

SQL大神请进,很需要你们的帮忙,多谢啦

热度:90   发布时间:2016-04-24 09:27:58.0
SQL大神请进,很需要你们的帮忙,谢谢啦
我现在遇到一个问题:现在有两张表,一张是Order(订单表),另一张是OrderDetail(订单明细表),两个表通过OrderId关联。Order表中的ProductType字段是后来才加的,现在是想找到Order表中Id和OrderDetail表中的OrderId相等的数据,然后把OrderDetail表中ProductType字段的值赋给Order表中的ProductType字段。还有一个重要的细节就是,一个订单可能有多个订单明细(也就是一个订单可能都多个商品的意思),这种情况是把OrderDetail表中多个ProductType字段的值拼接到Order表中的ProductType字段。麻烦大家想想我以上表述的这个问题用SQL语句该怎么解决?非常感谢。

------解决思路----------------------
UPDATE [Order]
SET ProductType=
(SELECT''+CAST(ProductType AS VARCHAR(10))FROM OrderDetail
WHERE OrderDetail.OrderId=ID
FOR XML PATH(''))
SQL2005+有效
------解决思路----------------------
UPDATE Order
SET ProductType=
(SELECT STUFF((SELECT ','+ProductType FROM  OrderDetail WHERE  OrderDetail.OrderId=Order.Id FOR XML PATH('')),1,1,''))
中间用,分割,可以自己处理成需要的
  相关解决方案