我要问的项目是向老师发送一封电子邮件,询问他们下学期教的课程使用什么书,以便可以订购这些书。我有一个查询,将即将到来的学期课程的课程编号与历史教科书订单的课程编号进行比较,仅提取本学期正在教授的课程。那就是我迷路的地方。
我有一个包含以下内容的表:
- 教授
- 课程编号
- 年
- 书名
数据如下所示:
professor year course number title
--------- ---- ------------- -------------------
smith 13 1111 Pride and Prejudice
smith 13 1111 The Fountainhead
smith 13 1222 The Alchemist
smith 12 1111 Pride and Prejudice
smith 11 1222 Infinite Jest
smith 10 1333 The Bible
smith 13 1333 The Bible
smith 12 1222 The Alchemist
smith 10 1111 Moby Dick
johnson 12 1222 The Tipping Point
johnson 11 1333 Anna Kerenina
johnson 10 1333 Everything is Illuminated
johnson 12 1222 The Savage Detectives
johnson 11 1333 In Search of Lost Time
johnson 10 1333 Great Expectations
johnson 9 1222 Proust on the Shore
这是我需要代码“在纸上”执行的操作:按教授对记录进行分组。确定该组中的每个唯一课程编号,并按课程编号对记录进行分组。对于每个唯一的课程编号,确定相关的最高年份。然后用那个教授+课程号+年份组合吐出每条记录。
使用样本数据,结果将是:
professor year course number title
--------- ---- ------------- -------------------
smith 13 1111 Pride and Prejudice
smith 13 1111 The Fountainhead
smith 13 1222 The Alchemist
smith 13 1333 The Bible
johnson 12 1222 The Tipping Point
johnson 11 1333 Anna Kerenina
johnson 12 1222 The Savage Detectives
johnson 11 1333 In Search of Lost Time
我在想我应该为每个老师创建一个记录集,并在其中为每个课程编号创建另一个记录集。在课程编号记录集中,我需要系统确定最高年份编号是什么——也许将其存储在变量中?然后拉出每条相关记录,这样如果老师在他们最后一次教授该课程时订购了 3 本书(无论是在 2013 年还是 2012 年等等),所有这三本书都会显示出来。不过,我不确定我是否以正确的方式考虑记录集。
到目前为止,我的 SQL 是基本的,显然不起作用:
SELECT [All].Professor, [All].Course, Max([All].Year)
FROM [All]
GROUP BY [All].Professor, [All].Course;