将生成的XML列(从子查询)加入父查询

时间:2013-04-03 13:54:27

标签: sql sql-server

我正在处理一个现有的查询,该查询当前加入了许多表,但也加入了子查询。像我在下面所示的东西:

SELECT p.*
FROM Product as p
LEFT JOIN (
SELECT pl.*
FROM ProductList
WHERE .....) as pl
ON p.id = pl.productId
WHERE....

现在在实际查询中有更多的表和更多条件,但我只想关注这个问题。

我们想要的是内部查询(在ProductList上)作为XML返回,当然还要将它连接到顶级表上的正确行。

我猜这样的事情

SELECT top 10 p.*
FROM Catalogue.Product as p
LEFT JOIN (
SELECT TOP 10 *
FROM Catalogue.ProductListItem
FOR XML RAW('Product'), ROOT('Products'), ELEMENTS
) as pl
ON p.productid = salespart.nodes('Products/Product/ProductId')

你能帮忙吗?

1 个答案:

答案 0 :(得分:2)

不太清楚你想要的输出是什么,但我想你最好的是在字段列表中使用相关的子查询,为每个产品Catalogue.ProductListItem构建XML。

select p.*,
       (
         select pl.*
         from Catalogue.ProductListItem as pl
         where pl.ProductID = p.ProductID
         for xml raw('Product'), root('Products'), elements, type
       ) as ProductXML
from Catalogue.Product as p