您好,我有一个查询要为包含项目,成本和重量的数据库设置
说出具有各自权重的项目的表格,看起来像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),所以我只需要帮助找到一种方法来检查是否一个属性在另一个属性的范围内以获得我想要的结果。非常感谢您的任何帮助,谢谢!
答案 0 :(得分:0)
一种解决方案是聚合:
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;
答案 1 :(得分:0)
您需要在cost
表中找到正确的行:
select i.*, c.cost
from ItemWeight i
left join CostPerWeight c on c.weight =
(select min(d.weight) from CostPerWeight d where d.weight >= i.weight)
此外,您没有定义重量大于2500的商品会发生什么。为清楚起见,在表CostPerWeight
中将列weight
重命名为up_to_weight
。 / p>