2012-06-30 4 views
0

я могу получить следующие результаты с этим рабочим запросом:Для каждого результата, добавьте/объединить для одного результата MySql

$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 

То, что я пытаюсь достичь для каждого клиента должен добавьте все их значения time_start для одного результата, добавьте все их значения time_end для получения одного результата, а затем получите разницу между этими двумя результатами. Это позволит мне определить итоговые значения для каждого клиента.

Я работаю на PHP и пробую все способы foreach без везения и неправильного возврата массива. Есть идеи?

+0

'выберите client_id, сумма (TIME_START) -сумма (time_end) как "разность" из туЬаЫх групп по client_id;' –

ответ

1

Попробуйте это:

$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"; 
+0

Отлично! Я отменил SUM (tt.time_start) SUM (tt.time_end). Спасибо! – jonthoughtit

0

time_start и time_end - это значения временных меток. Так ;

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

после этого, если вы запустите date() функцию в intented формате, я думаю, он должен работать правильно.

+0

не работает. Не возвращает ничего. – jonthoughtit

Смежные вопросы