首页 > 解决方案 > 在一个范围内连接属性匹配的表

问题描述

您好我有一个查询,我想为一个涉及项目、成本和重量的数据库设置

说具有各自重量的项目表看起来像这样ItemWeight

NAME      Weight
--------  -------
item1     250
item2     1600
item3     2200

还有另一个重量范围内的物品成本表,看起来像这样 CostPerWeight

Weight    Cost
--------  ------
2500      6.00
2000      5.75
1500      5.00
1000      3.00
500       2.00

因此,我希望能够拉出的结果表是一个包含项目、重量和成本的表。

到目前为止,我已经放在一起:

SELECT I.NAME, I.weight, C.cost
FROM ItemWeight I 
JOIN CostPerWeight C ON I.Weight <= C.Weight

但问题是一个项目,说 265 重量应该是 2.00 成本,因为它小于 500,但它也小于 1500,即成本 5.00,所以我只需要帮助找到一种方法来检查一个属性是否在另一个属性的范围内得到我想要的结果。非常感谢任何帮助,谢谢!

标签: sqldb2

解决方案


解决方案之一是聚合:

SELECT I.NAME, I.Weight, MIN(C.Cost) AS Cost
FROM ItemWeight I 
JOIN CostPerWeight C ON I.Weight <= C.Weight
GROUP BY I.NAME, I.Weight;

推荐阅读