Code :
1) Récupération des enregistrements à traiter : SELECT td.lat, td.lng, td.level, td.radius FROM TableData td WHERE td.level >= 10 2) Pour chaque enregistrement retourné : SI level >= 60 ALORS $Sql = "UPDATE TableCG cg SET cg.nbcircles = cg.nbcircles + 1, cg.level = IF(cg.level >= ".$row['level'].", cg.level, ".$row['level']." ) WHERE (6366000 * 2 * ASIN(SQRT(POW(SIN((RADIANS(".$row['lat']." ) - RADIANS(cg.lat)) / 2.0), 2) + COS(RADIANS(".$row['lat']." )) * COS(RADIANS(cg.lat)) * POW(SIN((RADIANS(".$row['lng']." ) - RADIANS(cg.lng)) / 2.0), 2)))) <= ".$row['radius'] SINON $Sql = "UPDATE TableCG cg SET cg.nbcircles = cg.nbcircles + 1, cg.level = IF(cg.level >= ".$row['level'].", cg.level, ".$row['level']." ) WHERE (6366000 * 2 * ASIN(SQRT(POW(SIN((RADIANS(".$row['lat']." ) - RADIANS(cg.lat)) / 2.0), 2) + COS(RADIANS(".$row['lat']." )) * COS(RADIANS(cg.lat)) * POW(SIN((RADIANS(".$row['lng']." ) - RADIANS(cg.lng)) / 2.0), 2)))) BETWEEN " .(0.5 * $row['radius'])." AND ".$row['radius']; FIN SI 3)Exécuter $Sql
|