php - 比较php中的两个mysql数据库表/数组并根据时间戳进行更新

标签 php mysql

我知道这个标题很糟糕,我找不到更好的方法来阐明我的问题。

我搜索了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 表中提取信息并以某种方式比较两个数组并更新第三个数组? 或者也许我缺少一个更简单的解决方案。

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

谢谢!

最佳答案

对我来说,听起来您可以取消时间戳、月份和年份变量,并将其替换为单个日期时间戳。
另外,在“已接收”表中添加一列作为集合的日期时间戳。
最后,创建另一个表来跟踪已履行的订单。

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

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

清澈如泥? :P

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

关于php - 比较php中的两个mysql数据库表/数组并根据时间戳进行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16740964/

相关文章:

php - Wordpress 运行 SQL 查询以使用表单更新数据库

php - 查找特定日期范围内每天的门票总数

mysql - 如何在 Rails 中使用带有 DESC 的 2 个字段的 order by 子句?

php - 实现 Searchable,Laravel 的一个搜索特性

MySQL 外键约束不适用?

php - 将带有 URL 变量的超链接添加到数据表(jQuery)+搜索不起作用

php - 我丢失了 WordPress 管理员密码

php - 创建分类法时删除描述框

php - Laravel Eloquent 扩展模型

php - 传递给函数的原始变量名?