Php 从新创建的记录计算时间长度,然后将该时间插入记录中的一列?
我有这样一个数据库: 主桌叫 “过程”在“过程事件”表中可以有许多行。每个过程事件行都有一个名为“时间”的列 在这里,我可以计算从记录的第一行到最后一行的总时间 情况就是这样: -创建过程表中的行并添加数据-工作 -过程事件行在“过程事件”表中创建,并且 填满了-工作 -使用中的第一行和最后一行计算时间长度 那张唱片不起作用 -将计算出的时间长度插入在开始时创建的过程行列中。此列将称为“过程长度” 我为什么要这样做? 这将允许用户查找过程 这是我的疑问:Php 从新创建的记录计算时间长度,然后将该时间插入记录中的一列?,php,mysql,join,Php,Mysql,Join,我有这样一个数据库: 主桌叫 “过程”在“过程事件”表中可以有许多行。每个过程事件行都有一个名为“时间”的列 在这里,我可以计算从记录的第一行到最后一行的总时间 情况就是这样: -创建过程表中的行并添加数据-工作 -过程事件行在“过程事件”表中创建,并且 填满了-工作 -使用中的第一行和最后一行计算时间长度 那张唱片不起作用 -将计算出的时间长度插入在开始时创建的过程行列中。此列将称为“过程长度” 我为什么要这样做? 这将允许用户查找过程 这是我的疑问: SELECT procedure_id
SELECT procedure_id, SUBTIME(events_max.start, events_min.start) AS duration
FROM procedure
JOIN ( SELECT procedure_id, SELECT MAX(time) AS start FROM procedure_events GROUP BY procedure_id ) AS events_max USING ( procedure_id )
JOIN ( SELECT procedure_id, SELECT MIN(time) AS start FROM procedure_events GROUP BY procedure_id ) AS events_min USING ( procedure_id )
GROUP BY procedure_id
我应该把它放在存储过程中吗
当前我的查询出现错误1064:
谢谢您的时间。您的查询中有一些错误:
SELECT procedure_id, SELECT MIN(TIME) AS START FROM procedure_events GROUP BY procedure_id
这是不好的,不是每个要检索的字段或要计算的函数都使用select per query once(选择一次),因此上面是:
SELECT procedure_id, MIN(TIME) AS START FROM procedure_events GROUP BY procedure_id
其次,时间和开始是保留字,不能用作字段名(除非用倒勾“`”括起来,但这不是一个好的建议)
始终尽量使查询尽可能简单-这将为您提供:
- 便于将来的维护
- 可读性
- 绩效效益
SELECT
procedure_id,
TIMEDIFF(MAX(`time`), MIN(`TIME`)) AS duration
FROM procedure_events
GROUP BY procedure_id
然后可以将计算出的值插入相应的表中
干杯