2013-04-03 43 views
0

我正在处理现有的查询,该查询当前连接多个表,但也连接到子查询。像我所如下图所示:将生成的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') 

你能帮忙吗?

回答

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 
+0

这是一个建议,我在这里实际做到了,但由于查询其余部分的复杂性,它不起作用。谢谢你的想法,这看起来像是正确的答案,你确实解释了我试图达成的目标比我阐明的要好。 –