我有以下查询:
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
)
因此您可以看到,我试图在每个作业的总小时数旁边显示每个时间表上记录的小时数。一个作业可以有多个时间表。有没有更有效的方法来实现这一目标?
最佳答案
您的结果中的小时数有什么用? 如果你只需要总和,你可以这样做:
SELECT t.assignment_id,
t.timesheet_id,
SUM(t.hours)
FROM timesheets t
GROUP BY t.assignment_id, t.timesheet_id
关于mysql - 此嵌套查询的替代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23553673/