我有以下查询:
SELECT t.assignment_id,
t.timesheet_id,
t.hours,
(SELECT SUM(tss.hours) FROM timesheets tss
WHERE tss.assignment_id = t.assignment_id) as 'sumhours'
FROM timesheets t
产生:
assignment_id | timesheet_id | hours | sumhours
---------------------------------------------------------
2 2 4.50 8.00
2 3 3.50 8.00
3 4 0.00 0.00
3 5 0.00 0.00
表格定义:
'timesheets' (
'timesheet_id' int(11) AUTO_INCREMENT,
'hours' decimal(10,2),
'assignment_id' int(11),
PRIMARY KEY ('timesheet_id'),
CONSTRAINT 'assignment_fk' FOREIGN KEY ('assignment_id') REFERENCES 'assignments' ('assignment_id') ON DELETE CASCADE ON UPDATE CASCADE
)
因此,您可以看到我正在尝试显示每个时间表上记录的小时数,而不是每个作业的总小时数。一个作业可以有多个时间表。有没有更有效的方法来实现这一目标?
答案 0 :(得分:0)
结果中的小时数有多少? 如果你只需要总和,你可以这样做:
SELECT t.assignment_id,
t.timesheet_id,
SUM(t.hours)
FROM timesheets t
GROUP BY t.assignment_id, t.timesheet_id