使用JOIN,SUM和GROUP BY的SQL SELECT查询

时间:2012-04-21 16:44:36

标签: sql ms-access

我在MS Access数据库中有5个表:tblMember,tblPoint,tblRace,tblRaceType和tblResult。 (所有这些都有主键。) tblPoint包含(RaceTypeID,Position,Points)字段。

我想要做的是查看成员参与的所有比赛,看看他们来自哪个位置(存储在tblResult中)并查看这些位置是否得分(如tblPoint中所定义)。然后,我想为每个成员添加所有点,并在查询中显示这些点以及成员名称...

这可能吗?我想出了下面这个SQL查询的最佳镜头:

SELECT Sum(tblPoint.Points) AS SumOfPoints, Count(tblRace.RaceID) AS CountOfRaceID,     
tblMember.MemberName, tblPoint.Points
FROM ((tblRaceType INNER JOIN tblPoint ON tblRaceType.RaceTypeID = tblPoint.RaceTypeID)    
INNER JOIN tblRace ON tblRaceType.RaceTypeID = tblRace.RaceTypeID) INNER JOIN   
(tblMember INNER JOIN tblResult ON tblMember.MemberID = tblResult.MemberID) ON    
tblRace.RaceID = tblResult.RaceID
GROUP BY tblMember.MemberName, tblPoint.Points
ORDER BY tblPoint.Points DESC;

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:3)

我会说这个

GROUP BY tblMember.MemberName, tblPoint.Points
ORDER BY tblPoint.Points DESC;

应该更像是这样:

GROUP BY tblMember.MemberName
ORDER BY Sum(tblPoint.Points) DESC;

此外,请在选择结尾处删除tblPoint.Points。这只是一个单点值,你需要总和。

按分数分组意味着每个成员获得一行并获得他们得分的值 - 可能不是您想要的。

相关问题