mysql - 当所有 child 都满足某些标准时更新 parent ?

标签 mysql sql

我有两个表,salesorders 是父表,invoices 是子表。我在触发器内运行一个存储过程,该存储过程在每次更新 invoices 表后运行。我想向此存储过程添加 UPDATE 语句。

现在,salesordersinvoices 都有一个 state 列。我想要做的是将销售订单状态更新为 0 当且仅当每个子发票的状态为 4 或更高时。有些发票状态也为 NULL,如果我有 3 张发票,其中 2 张的状态为 4 或更多,其中 1 张为 NULL,我不希望将销售订单state更新为0。

我正在考虑将每个销售订单的发票总数与发票状态 > 4 的数量进行比较,但我似乎仍然无法使其正常工作。我该怎么办?

最佳答案

评论太长了。

首先,我想问一下您是否真的需要这个。您能否优化数据库,以便查看单次销售的查询可以轻松地将所有发票收集在一起以检查状况?

如果没有,请考虑触发器。因为这是一个触发器,所以事情可能会变得棘手。我建议添加一列来指定有多少张发票不满足条件

您可以通过仅查看当前行来保持最新 - 尽管它确实需要比较值。

然后您可以将此值用于有关销售状态的逻辑。

关于mysql - 当所有 child 都满足某些标准时更新 parent ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57890620/

相关文章:

php - 如何向mysql表中插入数组数据

mysql - 对求和值执行过滤时出现问题

sql - 在查询中重用 SUM OVER PARTITION 返回值

sql - 一对多关系的约束

php - 制作条件语句以发送电子邮件警报

mysql - 如何在不使用JOIN和统计员工数量的情况下显示数据?

mysql - 对用于报告的 Wordpress/Woocommerce 自定义 SQL 查询进行故障排除

sql - 我应该使用外部表中的外键或字符串值吗?

MySQL 查询通过 GROUP BY 获取最大值、最小值以及单独行中的多个表连接

mysql - 只更新sql中的日期