我遇到了麻烦。 我有一个SQL表,其中包含已完成,关闭,取消和处理的流程,这些流程也由一个区域(人才,外包,数字等)关联。 我希望按区域进行AVG,并根据进程的状态进行总计。 所以我有:
$tiempoQueryFinalizados = mysqli_query($con,
"SELECT IFNULL(SUM(IFNULL(timestampdiff(DAY,fecha_creacion,IFNULL(fecha_cerrado,NOW())),0)),0) AS finalizados,
(Select count(id_proceso) from proceso where estado ='FINALIZADO' and fecha_cerrado is not null) as c
FROM proceso
WHERE estado = 'FINALIZADO' and fecha_cerrado IS NOT NULL and area ='".$rowArea['id_area']."' ");
然后我在PHP中使用了一个简单的除法
mysqli_fetch_assoc($tiempoQueryFinalizados)['finalizados'] / mysqli_fetch_assoc($tiempoQueryFinalizados)['c']
但我收到错误Warning: Division by zero
,所以我检查是否为零,但它没有。在此示例mysqli_fetch_assoc($tiempoQueryFinalizados)['c'] = 2
中,但仍计为0
请帮忙吗?
编辑:该区域由$areaQuery = mysqli_query($con,"SELECT * from area where id_area!=0");
答案 0 :(得分:2)
这不是一个简单的划分
mysqli_fetch_assoc($tiempoQueryFinalizados)['finalizados'] /
mysqli_fetch_assoc($tiempoQueryFinalizados)['c']
每次调用mysqli_fetch_assoc()
都会从结果集中获取一个新行。因此查询只返回一行,第二次调用将返回FALSE,等于零。
所以这将是一种更好的检索和计算方法
$row = mysqli_fetch_assoc($tiempoQueryFinalizados);
$calc = $row['finalizados']] / $row['c'];
答案 1 :(得分:0)
好的,我忘记了当你对mysqli_fetch*
进行每次通话时,你跳到下一个注册,所以我只需要编辑
$tiempoQueryFinalizados = mysqli_query(...
通过
$tiempoQueryFinalizados = mysqli_fetch_assoc(mysqli_query(...
现在
$tiempoQueryFinalizados['finalizados'] / $tiempoQueryFinalizados['c']
效果很好:) 谢谢大家!