2017-07-19 12 views
0

私は問題があります。 私は確定、クローズ、キャンセル、作業中のプロセスを持つSQLテーブルを持っています。これは領域(才能、アウトソーシング、デジタルなど)に関連しています。 地域と合計でプロセスの状態別にAVGを行いたい。 はので、私が持っている:ゼロによるPHPのSQL除算警告がゼロではありません

$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']."' "); 

をそれから私は

mysqli_fetch_assoc($tiempoQueryFinalizados)['finalizados']/mysqli_fetch_assoc($tiempoQueryFinalizados)['c']

とPHPで簡単な除算を使用しますが、私はエラーWarning: Division by zeroを取得するので、ゼロだったが、そうでない場合、私は確認してください。この例ではmysqli_fetch_assoc($tiempoQueryFinalizados)['c'] = 2ですが、まだ0とカウントしています

助けてください。

EDIT:面積は$areaQuery = mysqli_query($con,"SELECT * from area where id_area!=0");

+2

mysqli_fetch_assoc( 'tiempoQueryFinalizados)[' finalizados '] 'がnullまたはゼロです。 – Ian

+0

yup、ときどき0/2 = 0 – UnsignedFoo

+0

そのクエリによって返される行の数はどれくらいですか? – RiggsFolly

答えて

2

これの配列フェッチで返されるが、単純な割り算

mysqli_fetch_assoc($tiempoQueryFinalizados)['finalizados']/
mysqli_fetch_assoc($tiempoQueryFinalizados)['c'] 

mysqli_fetch_assoc()への各呼び出しは、あなたの結果セットから新しい行を取得できません。したがって、クエリでは1行しか返されないため、2番目の呼び出しはFALSEを返します。これは0に等しくなります。

は、これは検索や計算を行うためのより良い方法だろう

$row = mysqli_fetch_assoc($tiempoQueryFinalizados); 
$calc = $row['finalizados']]/$row['c']; 
0

あなたはmysqli_fetch*あなたがに次のレジスタをジャンプしているために行うすべての呼び出しが、これだけ、私は必要なときに、私は忘れて[OK]を

$tiempoQueryFinalizados = mysqli_query(...

を編集します:) 非常に素晴らしい

$tiempoQueryFinalizados = mysqli_fetch_assoc(mysqli_query(...

$tiempoQueryFinalizados['finalizados']/$tiempoQueryFinalizados['c']

作品はあなたのすべてに感謝!

関連する問題