我正在尝试在我的申请中获得一个人的总工作时间。
我的表中有这些列:
id, UserId, ProjectId, FromHr, ToHr, WorkedHrs, Status
用户每天都会添加每一列,而WorkedHrs将是FromHr
到ToHr
之间的计数。
我现在试图在每个月末获得多个结果的总值,例如:
SELECT * FROM Hours WHERE UserId = '22' AND ProjectId = '44' COUNT(WorkedHrs)
我真的不明白为什么我没有得到任何结果,还有另一种方法可以解决这个问题吗?
答案 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个表格(我可以从您的帖子中看到)users
,hours
和projects
。
在users
中,为每个用户创建一个total_hours_worked
列。
然后插入hours
行时,计算差异并将其添加到users.total_hours_worked
。所以它从20到28(作为一个例子)。
然后当您需要total_hours_worked
时,只需从users
获取。
服务器响应速度更快,不必每次都计算。
修改强>
这不是你要求的,但也许你真正需要的东西。