使用php

时间:2015-09-08 18:02:45

标签: php mysql

我正在尝试在我的申请中获得一个人的总工作时间。

我的表中有这些列:

id, UserId, ProjectId, FromHr, ToHr, WorkedHrs, Status

用户每天都会添加每一列,而WorkedHrs将是FromHrToHr之间的计数。

我现在试图在每个月末获得多个结果的总值,例如:

SELECT * FROM Hours WHERE UserId = '22' AND ProjectId = '44' COUNT(WorkedHrs)

我真的不明白为什么我没有得到任何结果,还有另一种方法可以解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

试试这个:

SELECT SUM(WorkedHrs) FROM Hours WHERE UserId = '22' AND ProjectId = '44'

SQL查询的解剖结构如下:

SELECT [list of all the things that you want returned]
FROM [table]
WHERE [conditions]

如果你想从mysql返回任何东西,它必须在查询的SELECT部分。

答案 1 :(得分:1)

应该像执行以下操作一样简单:

SELECT SUM(WorkedHrs) AS TotalHoursWorked
FROM Hours
WHERE UserId = 22
AND ProjectId = 44;

您所描述的结构并未说明您有任何日期列。如果您想要计算每个月的小时数,那么您需要添加一个日期列(例如ActionDay),之后您可以通过修改查询来过滤结果,如下所示:

SELECT UserId, ProjectId, SUM(WorkedHrs) AS TotalHoursWorked, DATE_FORMAT(ActionDay, '%Y-%m') AS Month
FROM Hours
WHERE UserId = 22
AND ProjectId = 44
AND YEAR(ActionDay) = 2015
AND MONTH(ActionDay) = 7
GROUP BY DATE_FORMAT(ActionDay, '%Y%m');

答案 2 :(得分:-1)

我会做什么。

创建3个表格(我可以从您的帖子中看到)usershoursprojects

users中,为每个用户创建一个total_hours_worked列。

然后插入hours行时,计算差异并将其添加到users.total_hours_worked。所以它从20到28(作为一个例子)。

然后当您需要total_hours_worked时,只需从users获取。

服务器响应速度更快,不必每次都计算。

修改

这不是你要求的,但也许你真正需要的东西。