【问题标题】:How to find the right size box? [duplicate]如何找到合适尺寸的盒子? [复制]
【发布时间】:2021-02-10 00:00:48
【问题描述】:

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

问题是找到合适尺寸的盒子,让物流业务在运输时节省资金。

我们有 2 张桌子,分别是盒子和产品。

Boxes 表包含每个盒子的每个 ID 和尺寸。 “w”代表宽,“d”代表深度,“h”代表高度。为方便起见,请假设我们只有 3 盒样品。

产品表还包括产品 ID、尺寸。尺寸与盒子表的含义相同。 'layable' 是指产品不仅可以直接包装,还可以包装。例如,产品“g”是一个易碎的瓶子,无法在盒子中放置水平位置。因此,这是可放置列中的“n”。

这道题需要查询每个商品ID与正确的尺寸框。 尺寸合适的盒子意味着产品需要用空间最小的盒子发货。

希望您的帮助。谢谢。

盒子:

size w d h
S 353 250 25
M 450 350 160
L 610 460 460

产品:

ID w d h layable
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 size
a S
b M
... ....
... ....
... ....
g S

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。

标签: sql oracle logistics


【解决方案1】:

嗯。 . .我不太确定“可放置”如何适合。但是您想要最小的盒子,它与每个尺寸一样大或更大。基本思路是:

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

【讨论】:

  • 感谢您的回答,尽管这无法解决“可放置”问题。很好的提示。
  • OP 重新发布了这个问题,并发布了他自己的尝试。从那次尝试中,我们看到即使是不可放置的物品(他在另一篇文章中也有更好的解释),产品也可以在盒子内旋转。因此,产品的(宽度、深度)的最小值必须与盒子的(宽度、深度)的最小值进行比较,并且从最大到最大。
猜你喜欢
  • 1970-01-01
  • 2019-05-07
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
  • 2012-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多