内部连接,每个产品只返回1行

时间:2012-07-10 21:06:55

标签: sql

希望这很简单,但我想要做的只是在CartContents表中为每个产品拉回1行。我遇到的问题是有些产品有多个图像,如果有超过1个图像链接到产品,则会返回这些图像。

这是我创建的,但它仍会为每个产品拉回多行。

SELECT DISTINCT (pri.FileName), p.Title, tc.Quantity, tc.FK_ProductID
    FROM [Ordering].[CartContents] tc
    INNER JOIN [Ordering].[Products] p ON p.ProductID = tc.FK_ProductID
    INNER JOIN [Ordering].[ProductImages] pri on pri.FK_ProductID = p.ProductID
    WHERE FK_UserID = @FK_UserID

由于

1 个答案:

答案 0 :(得分:4)

假设您没有文件名,

“in”将解决问题:

SELECT p.Title, tc.Quantity, tc.FK_ProductID
FROM [Ordering].[CartContents] tc  INNER JOIN
     [Ordering].[Products] p
     ON p.ProductID = tc.FK_ProductID
where p.ProductID in (select pri.FK_ProductID 
                      from [Ordering].[ProductImages] pri
                     ) and
      FK_UserID = @FK_UserID 

使用文件名,您必须选择一个:

SELECT min(pri.FileName) as FileName, Title, tc.Quantity, tc.FK_ProductID
FROM [Ordering].[CartContents] tc  INNER JOIN
     [Ordering].[Products] p
     ON p.ProductID = tc.FK_ProductID INNER JOIN
     [Ordering].[ProductImages] pri on pri.FK_ProductID = p.ProductID
where FK_UserID = @FK_UserID 
group by Title, tc.Quantity, tc.FK_ProductID