2017-05-19 29 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记录。