如何找到合适尺寸的盒子?

问题描述

这是一个很难回答的问题,我希望我能在这里得到答案。

问题是找到合适尺寸的箱子,让物流企业在运输时节省开支。

我们有 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