【发布时间】:2019-09-06 09:17:08
【问题描述】:
我有一对多的相关表;一个产品表,以及每个 ProductID 的图像。一个或多个 productID 的图像可以存在,也可以根本不存在。所以如果图像不存在,我离开外部加入它们,记录将为空。
我通过他们的类别 ID 选择它们,这意味着也可能有其他产品,所以我不能使用前 1 个。
我的查询:
select p.ID,p.ProductName,pc.CategoryID, pic.BigPath
from tbl_Products p
LEFT join tbl_ProductToCategory pc on p.ID = pc.ProductID
left outer join tbl_ProductImages pic on pic.ProductID = p.ID
where pc.CategoryID = 1174
由于表 ProductImages,上述查询获取了具有多条记录的所有产品。
我需要从产品图像表中获取单条记录;例如:具有最小图像 ID 的图像。
上面的查询得到这些:
ID ProductName CategoryID BigPath
311 a 1174 www.blabla.com/cdn/a..
313 b 1174 www.blabla.com/cdn/b..
318 c 1174 www.blabla.com/cdn/c1..
318 c 1174 www.blabla.com/cdn/c2..
318 c 1174 www.blabla.com/cdn/c3..
我希望:
ID ProductName CategoryID BigPath
311 a 1174 www.blabla.com/cdn/a..
313 b 1174 www.blabla.com/cdn/b..
318 c 1174 www.blabla.com/cdn/c1..
如何从 ProductImages 表中获取一条记录?
【问题讨论】:
-
请添加具有预期输出的示例数据。
-
将 WHERE 子句条件移动到(第一个)ON 子句以获得真正的 LEFT JOIN 结果。
标签: sql sql-server group-by one-to-many