2013-04-03 81 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

這是一個建議,我在這裏實際做到了,但由於查詢其餘部分的複雜性,它不起作用。謝謝你的想法,這看起來像是正確的答案,你確實解釋了我試圖達成的目標比我闡明的要好。 –