2017-05-19 25 views
0

我需要找到最便宜的值,然後檢索有關此值的信息。我試圖通過使用CTE檢索chepest項目,然後INNER JOIN來檢索項目信息,但我得到3條記錄而不是單條記錄。我怎樣才能得到單個記錄?試圖找到與CTE最小值

;WITH GroupedData AS (
SELECT c.SparePartId, MIN(c.Price) AS MinPrice FROM Catalogue c 
    WHERE c.SparePartId = @SparePartId 
    GROUP BY c.SparePartId 
    ) 
    SELECT DISTINCT sp.Id, gd.MinPrice, sp.Name, Image 
    FROM SpareParts sp 
    INNER JOIN Photos p ON sp.Id = p.SparePartId 
    INNER JOIN GroupedData gd ON sp.Id = gd.SparePartId 

enter image description here

+2

也許你有三個'照片'爲'SpareParts.Id'? – JNevill

回答

0

由於您的GROUP BY和你在哪裏在你的CTE要求,其結果是一個記錄:

SELECT c.SparePartId, MIN(c.Price) AS MinPrice FROM Catalogue c 
WHERE c.SparePartId = @SparePartId 
GROUP BY c.SparePartId 

而且由於它是不可能的,你必須爲每個sparepart多個記錄在你的spareparts表中。然後INNER JOIN到photos必須導致記錄膨脹,這意味着對於您的@SparePArtID,您必須有三個Photos記錄。