我有一个查询,我需要一些帮助,已经检查了一些公平的教程,但没有发现我发现这个问题。
我有三个连接表,产品,ProductImagesLookUp和Images。
产品可以包含任意数量的图像,产品图像的顺序存储在ProductImagesLookUp中。
我需要返回带有主图像的产品列表(具有最低订单值的产品)。
列表如下所示
Product
Images
LookUpId FileID Order ProductTitle Price ProductId
65 2 1 Amari Summer Party Dress 29.99 7
66 1 2 Amari Summer Party Dress 29.99 7
67 3 3 Amari Summer Party Dress 29.99 7
74 4 5 Beach Cover Up 18.00 14
75 5 4 Beach Cover Up 18.00 14
76 7 6 Beach Cover Up 18.00 14
77 8 7 Beach Cover Up 18.00 14
78 9 8 Beach Cover Up 18.00 14
79 10 9 Amari Classic Party Dress 29.95 15
80 11 11 Amari Classic Party Dress 29.95 15
81 12 10 Amari Classic Party Dress 29.95 15
我希望我的查询能够撤回具有最低订单值的不同产品列表。 即它使用ProductImagesLookUpId为65(产品7),74(产品14)和79(产品15)来拉回行。
提前感谢您的帮助。这个真的让我把头发拉出来了!
答案 0 :(得分:1)
SELECT
l.LookupId,
i.FileId,
l.[Order],
p.ProductTitle,
p.Price,
p.ProductId
FROM
Products p
INNER JOIN ProductImagesLookUp l ON l.ProductId = p.ProductId
INNER JOIN Images i ON i.FileId = l.FileId
WHERE
i.[Order] = (
SELECT MIN([Order])
FROM ProductImagesLookUp
WHERE ProductId = p.ProductId
)
不需要分组或聚合任何内容,因为子查询可确保任何给定ProductId
的结果行不超过一个 - Order
最低的那一行。< / p>