我正在考虑为计时赛制作一个简单的排行榜。一个成员可能会进行多次计时赛,但我只想显示他们最快的结果。我的表格列如下:
Members { ID (PK), Forename, Surname }
TimeTrials { ID (PK), MemberID, Date, Time, Distance }
一个示例数据集将是:
Forename | Surname | Date | Time | Distance
Bill Smith 01-01-11 1.14 100
Dave Jones 04-09-11 2.33 100
Bill Smith 02-03-11 1.1 100
我从上面的例子得到的答案是:
Forename | Surname | Date | Time | Distance
Bill Smith 02-03-11 1.1 100
Dave Jones 04-09-11 2.33 100
到目前为止我有这个,但访问抱怨我没有使用 Date 作为聚合函数的一部分:
SELECT Members.Forename, Members.Surname, Min(TimeTrials.Time) AS MinOfTime, TimeTrials.Date
FROM Members
INNER JOIN TimeTrials ON Members.ID = TimeTrials.Member
GROUP BY Members.Forename, Members.Surname, TimeTrials.Distance
HAVING TimeTrials.Distance = 100
ORDER BY MIN(TimeTrials.Time);
如果我从 SELECT 中删除日期,则查询有效(没有日期)。我曾尝试在 TimeTrials.Date 上使用 FIRST,但这将返回通常不正确的第一个日期。
显然,将日期作为 GROUP BY 的一部分不会返回我所追求的结果集。