我知道这个标题很糟糕,我找不到更好的方法来阐明我的问题。
我搜索了SO但没有成功,但如果答案已经存在,请随意链接它,我会仔细阅读它。
<小时/>我正在构建一个图书订购系统。人们整个月都会订购书籍,每个月底都会有一大笔订单到达。
订单被记录到具有以下字段的订单表中:
order_id, book_id, quantity, language, person_ordering, timestamp, month, year
当订单到达时,它们将被输入到具有以下字段的“已接收”表中:
book_id, quantity, language
现在假设一个人订购了 (2) 本书 1。另一个人订购了 (3) 本。还有另一个(5)。总计 (10)。 然后订单到了,但只有 7 份。
我正在尝试编写一个脚本/函数来找出:
- 哪些人将收到该书的副本(先到先得,因此先订购该书的人将首先得到其订单。
- 如果某人只能部分履行订单,则更新订单表(或者可能需要新的待处理订单表?)以反射(reflect)他们仍有 X 金额等待履行。然后在下个月,他们的订单将再次根据订购日期首先履行。
我考虑过根据下订单的时间戳从 Orders 表中提取信息并对其进行排序,然后从 Received 表中提取信息并以某种方式比较两个数组并更新第三个数组? 或者也许我缺少一个更简单的解决方案。
如果需要更多信息,我很乐意提供。 我已经连续两天为这个问题而烦恼了。 任何帮助将不胜感激。
谢谢!
最佳答案
对我来说,听起来您可以取消时间戳、月份和年份变量,并将其替换为单个日期时间戳。
另外,在“已接收”表中添加一列作为集合的日期时间戳。
最后,创建另一个表来跟踪已履行的订单。
- 在所需月份上选择 *,按“订单”数据的日期时间戳降序排列。
- 在单独的查询中获取“收到的”数据,以便使用正确的月份进行编程比较。
- 将每个“已收到”book_id 的“已收到”数量放入单独的变量(可能是键/值数组)中。
- 对于每个“已收到”book_id,在子循环中比较并计算每个订单所需的“已订购”数量,从而更新“已收到”数量值。在子循环的每次迭代结束时,如果您的“订购”数量不等于 0,那么您需要为下个月添加剩余数量的另一个条目,并将所有已履行的订单输入到您的新表中。里>
* 您**不会**想要修改任何现有记录,因为您将来几乎肯定需要保持不变。
清澈如泥? :P
* 数据库提示 - 每条记录的每个条目都应**始终**具有日期时间戳,并在可能的情况下,“谁做的”。
关于php - 比较php中的两个mysql数据库表/数组并根据时间戳进行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16740964/