Para cada resultado, agregue/combine para un solo resultado MySql

Puedo obtener los siguientes resultados con esta consulta de trabajo:

$query = "SELECT tt.time_start, tt.time_end
FROM track_time as tt, project_track as pt, project_clients as pc, clients as cl
WHERE tt.track_id = pt.track_id
AND pt.project_id = pc.project_id
AND pc.client_id = cl.client_id
AND cl.client_id =".$db->prep($client_id);
$res = $db->query($query,'assoc');

**RESULTS**
time_start  time_end    client_id
1340927940  1340928420  1
1341066240  1341077040  1
1341086400  1341088560  1
1340954400  1340986800  7

Lo que estoy tratando de lograr para cada cliente es sumar todos sus tiempo_inicio valores para un resultado, sume todos sus fin_del_tiempo valores para un resultado, y luego obtener la diferencia entre esos dos resultados. Esto me permitirá determinar los totales para cada cliente.

Estoy trabajando en PHP y probando todas las formas de foreach sin suerte y devoluciones de matriz incorrectas. ¿Algunas ideas?

preguntado el 01 de julio de 12 a las 00:07

select client_id, sum(time_start)-sum(time_end) as "difference" from mytable group by client_id; -

2 Respuestas

Prueba esto:

$query = "SELECT pc.client_id, 
                 (SUM(tt.time_start) - SUM(tt.time_end)) as `Difference`
          FROM  track_time as tt, project_track as pt, 
                project_clients as pc, clients as cl
          WHERE tt.track_id = pt.track_id
                    AND pt.project_id = pc.project_id
                    AND pc.client_id = cl.client_id
                    AND cl.client_id =" . $db->prep($client_id) . " 
          GROUP BY client_id";

Respondido 01 Jul 12, 01:07

¡Perfecto! Invertí SUM(tt.time_start) SUM(tt.time_end). ¡Gracias! - jonpensamiento

time_start y time_end parece ser valores de marca de tiempo. Entonces ;

$total = 0;
foreach( $array as $item)
{
     $total += strtotime( $item['time_start']);
}

después de eso, si ejecuta un date() función en el formato previsto, creo que debería funcionar correctamente.

Respondido 01 Jul 12, 00:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.