0

我知道可怕的标题,我找不到更好的方式来表达我的问题。

我通过 SO 搜索但没有成功,但如果答案已经存在,请随时链接它,我会仔细阅读。


我正在建立一个图书订购系统。人们将在整个月内订购书籍,并且每个月末都会收到一份大订单。

订单被记录到带有以下字段的订单表中:

order_id, book_id, quantity, language, person_ordering, timestamp, month, year

当订单到达时,它们被输入到带有以下字段的 Received 表中:

book_id, quantity, language

现在假设一个人订购了 (2) 本书 1。另一个人订购了 (3)。还有一个(5)。总共(10)。然后订单到了,它只有 7 份。

我正在尝试编写一个脚本/函数来找出:

  • 哪些人将收到这本书的副本(先到先得,所以最先订购的人将首先完成他们的订单。
  • 如果一个人只能部分完成他们的订单,则更新 Order 表(或者可能需要一个新的 Pending Orders 表?)以反映他们仍有 X 量等待完成。然后在下个月,他们的订单将再次根据订购日期首先完成。

我考虑过根据下订单时的时间戳从 Orders 表中提取信息并对其进行排序,然后从 Received 表中提取信息并以某种方式比较两个数组并更新第三个数组?或者也许我缺少一个更简单的解决方案。

如果需要更多信息,我很乐意提供。我已经连续两天为这个问题拉头发了。任何帮助,将不胜感激。

谢谢!

4

3 回答 3

0

您可以尝试在 Received 表中添加一个额外的字段。当订单到来时,您可以计算我们当时可以提供的副本数量。

book_id, quantity,qty_available, language

 1. B1    2   2  EN
 2. B1    3   3  EN
 3. B1    5   2  EN
于 2013-05-24T18:20:14.370 回答
0

假设 Received 表是针对当前库存的,并且仅在整个订单可以发货时才发货,以下是您可以做什么的建议:

  • 为订单添加一个字段,以了解订单是否已被履行。
  • 从订购书的人中选择,按日期订购。您可以限制收到的数量。
  • 开始履行订单并对其进行标记,直到达到收到的数量。
  • 如果剩余的 Received 数量不足以完成订单,请将其保留并将剩余数量留在 Received 中以备下次使用。

希望这是有道理的。

于 2013-05-24T18:28:35.210 回答
0

对我来说,听起来您可以取消时间戳、月份和年份变量,用单个日期时间戳替换。
此外,在 Received 表中为收集的日期时间戳添加一列。
最后,制作另一个表格来跟踪已完成的订单。

  1. 对您的“订单”数据按日期时间戳降序排序所需的月份执行选择 *。
  2. 在单独的查询中,使用正确的月份获取您的“接收”数据以进行程序比较。
  3. 将每个“收到” book_id 的“收到”数量放入单独的变量中(可能是键/值数组)。
  4. 对于每个“已收到” book_id,比较并计算子循环中每个订单所需的“已订购”数量,更新“已收到”数量值。在子循环的每次迭代结束时,如果您的“已订购”数量不等于 0,那么您需要为下个月添加另一个条目以及剩余数量,还将所有已履行的订单输入到您的新表中。

* 您**不会**想要修改任何现有记录,因为您几乎可以肯定将来需要保持不变。

清如泥?:P

* 数据库提示 - 每条记录的每个条目都应该**总是**有一个日期时间戳,并且在可能的情况下,一个“谁做的”。

于 2013-05-24T18:40:03.183 回答