2013-03-07 52 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