2013-03-07 134 views
0

我的代碼存在問題。我有兩張桌子。第一個employee_id:通過SQL循環並在PHP中計算總和

|僱員ID |

,第二個表稱爲employee_times:

| EMPLOYEE_ID | Hours_dev | hours_pm |

| 1 | 2 | 3 |

| 1 | 3 | 4 |

| 2 | 3 | 3 |

我想要做的是計算每個員工的工作總時間(hours_dev + hours_pm)。例如employee_id 1已工作12小時

到目前爲止,我試圖從第一個表中檢索所有employee_id,並使用for循環在SQL語句中查看employee_times(參見下面的代碼)。但是,代碼不起作用,因爲它爲employee_id和total_hours打印0。

我在本地主機服務器上使用MYSQL。

$ sql =「SELECT employee_id FROM employee」; $ result = mysql_query($ sql); ($ row = mysql_fetch_array) { $ employee_id = $ row ['employee_id']; }

   $employee_id_length = sizeof($employee_id); 

       for($i = 0; $i < $employee_id_length; $i++) 
       { 
       $sql4 = "SELECT employee_id, hours_dev, hours_pm FROM employee_times WHERE employee_id= '$employee_id[$i]'"; 
         $result = mysql_query($sql4); 
          while($info = mysql_fetch_array($result)); 
         { 
          $employee_id = $info['employee_id']; 
          $hours_dev=$info['hours_dev']; 
          $hours_pm=$info['hours_pm']; 
          $total_hours = ($total_hours + $hours_dev + $hours_pm); 

         } 

         //print "$employee_id worked for $total_hours"; 
       } 

任何幫助深表感謝。

+3

我很抱歉問一個愚蠢的問題,但你爲什麼不直接在SQL中做? – Sebas 2013-03-07 18:41:06

+0

我同意@Sebas它也會更快。 – James 2013-03-07 18:41:59

+0

是否可以直接從sql中執行?我想找出一名員工爲每位員工工作的所有小時數的總和。例如你最終應該用employee_id 1工作6小時,employee_id 2工作5個小時等等。我無法想到另一種計算表中每個員工沒有某種迭代器的時間的方法。我已經嘗試SELECT employee_id,通過employee_id從employee_times GROUP求和(hour_dev + hours_pm),但它不起作用。 – user2133387 2013-03-07 18:46:00

回答

1

你可以得到和直接

select employee_id, sum(hours_dev)+ sum(hours_pm) as total 
from employee_times WHERE employee_id= '1' 
group by employee_id 

請參閱本Fiddle Demo

+0

是否處理employee_id,hours_dev和hours_pm的多行? – user2133387 2013-03-07 18:51:35

+0

是的。檢查小提琴演示。我在那裏輸入了你的數據。 – DevT 2013-03-07 18:52:43

+0

我如何得到它,結果顯示員工1已工作12小時,員工2已工作6小時?這是我有最大的麻煩,因此我有修改小提琴演示for循環 – user2133387 2013-03-07 19:00:30

1

這應該得到你所需要

SELECT 
    hours_dev, 
    hours_pm, 
    sum(hours_dev) + sum(hours_pm) as total_hours 
FROM 
    employee_times 
WHERE 
    employee_id = 123 
GROUP BY 
    employee_id 
0

這個SQL查詢應該比腳本更快地獲取信息;

SELECT Employee_id, SUM(Hours_dev), SUM(Hours_pm), SUM(Hours_dev + Hours_pm) 
FROM employee_times 
GROUP BY Employee_id