Sql 将生成的XML列(从子查询)连接到父查询

Sql 将生成的XML列(从子查询)连接到父查询,sql,sql-server,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 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')

您能帮忙吗?

不太清楚您希望输出是什么,但我想最好是在字段列表中使用一个相关的子查询,该子查询从
catalog.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

这是我在这里得到的一个建议,但由于查询的其他部分很复杂,所以它不起作用。谢谢你,我想,这看起来确实是个正确的答案,你确实比我说的更好地解释了我想要实现的目标。