0

我的代码有问题。我有 2 张桌子。第一个员工 ID:

|员工编号|

1

2

3

第二个表称为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 = "从员工中选择员工 ID"; $result = mysql_query($sql); while($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";
              }

任何帮助深表感谢。

4

4 回答 4

1

你可以直接得到sum

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

参考这个小提琴演示

于 2013-03-07T18:44:21.627 回答
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
于 2013-03-07T18:44:29.613 回答
1

看看聚合函数: http ://www.w3schools.com/sql/sql_functions.asp http://www.w3schools.com/sql/sql_func_sum.asp

于 2013-03-07T18:47:23.157 回答
0

这个 SQL 查询应该比通过脚本更快地提取信息;

SELECT Employee_id, SUM(Hours_dev), SUM(Hours_pm), SUM(Hours_dev + Hours_pm) 
FROM employee_times 
GROUP BY Employee_id
于 2013-03-07T18:52:58.747 回答