问题描述
问题是找到合适尺寸的箱子,让物流企业在运输时节省开支。
我们有 2 张桌子,分别是盒子和产品。
盒子表包含每个盒子的每个 ID 和尺寸。 'w' 表示宽度,'d' 表示深度,'h' 表示高度。为方便起见,请假设我们只有 3 个盒装样品。
产品表还包括产品 ID、尺寸。 Dimensions 与 Box table 具有相同的含义。 “可平铺”是指产品不仅可以平直包装,也可以平铺放置。例如,产品“g”是一个易碎的瓶子,无法将其水平放置在盒子中。因此,这是可放置列中的“n”。
这道题需要查询每个产品ID的大小合适的框。 正确尺寸的盒子意味着产品需要用最小空间的盒子运输。
希望得到您的帮助。谢谢。
盒子:
大小 | w | d | h |
---|---|---|---|
S | 353 | 250 | 25 |
M | 450 | 350 | 160 |
L | 610 | 460 | 460 |
产品:
ID | w | d | h | 可放置 |
---|---|---|---|---|
a | 350 | 250 | 25 | y |
b | 450 | 250 | 160 | y |
c | 510 | 450 | 450 | y |
d | 350 | 250 | 25 | y |
e | 550 | 350 | 160 | y |
f | 410 | 400 | 430 | n |
g | 350 | 240 | 25 | n |
h | 450 | 350 | 160 | n |
i | 310 | 360 | 430 | n |
预期输出:
ID | 大小 |
---|---|
a | S |
b | M |
... | .... |
... | .... |
... | .... |
g | S |
解决方法
嗯。 . .我不太确定 "layable" 是如何适应的。但是你想要最小的盒子,它和每个维度一样大或比每个维度都大。基本思想是:
select p.*,(select b.size
from boxes b
where b.w >= p.w and b.d >= p.d and b.h >= p.h
order by b.size desc -- happens to works because S > M > L
limit 1
) as size
from products p