在MYSQL中累加子和

在MYSQL中累加子和,mysql,Mysql,我正在处理一个mySQL查询,希望它能将每个表的小计相加 我有一张会员桌。这有他们的名字,一个唯一的ID和几个其他不相关的项目。另一个表用于跟踪他们记录的社区服务。每个成员可以在其中多次。字段为uniqueID(成员外键)、自动增量(主要)、术语、小时数和位置 我想要这个查询做的是为给定的学期添加每个成员的小时数总和。下面是我拥有的,但不幸的是,它只给了我第一个成员,以及每个成员的总数。有什么想法吗 SELECT fName, lName, SUM(hours) FROM members M,

我正在处理一个mySQL查询,希望它能将每个表的小计相加

我有一张会员桌。这有他们的名字,一个唯一的ID和几个其他不相关的项目。另一个表用于跟踪他们记录的社区服务。每个成员可以在其中多次。字段为uniqueID(成员外键)、自动增量(主要)、术语、小时数和位置

我想要这个查询做的是为给定的学期添加每个成员的小时数总和。下面是我拥有的,但不幸的是,它只给了我第一个成员,以及每个成员的总数。有什么想法吗

SELECT fName, lName, SUM(hours)
FROM members M, communityService S
WHERE S.term = 'f2012' && M.onid = S.member

您只是缺少一个
GROUP BY
子句来聚合每个
fName,lName的总和:

SELECT fName, lName, SUM(hours)
FROM members M, communityService S
WHERE S.term = 'f2012' && M.onid = S.member
GROUP BY lName, fName
除MySQL之外的大多数RDBMS都会在查询中报告语法错误,但MySQL有一个独特的默认行为,即不确定地选择一个匹配行来填充聚合中未出现在
GROUP BY
子句中的其余列。这就是为什么会得到第一行的
lName,fName

复习

建议使用显式的
内部联接
而不是隐式联接(逗号分隔的
FROM


您需要一个
分组依据
子句,例如

SELECT fName, lName, SUM(hours)
FROM members
INNER JOIN communityService ON communityService.member = members.onid
WHERE communityService.term = 'f2012'
GROUP BY fName, lName   <--- modify as desired for your requirements.
选择fName、lName、SUM(小时)
来自成员
communityService.member=members.onid上的内部加入communityService
其中communityService.term='f2012'

fName分组,lName感谢您的帮助!我知道我可能错过了某种标记。我一定也会调查加入的情况在ANSI-92 SQL标准中(20多年前),旧样式的逗号分隔表列表样式被正确的ANSI
JOIN
语法所取代,不鼓励使用它
SELECT fName, lName, SUM(hours)
FROM members
INNER JOIN communityService ON communityService.member = members.onid
WHERE communityService.term = 'f2012'
GROUP BY fName, lName   <--- modify as desired for your requirements.