私が依頼しているプロジェクトは、次の学期の授業でどの本を使用しているかを尋ねるメールを教師に送信して、本を注文できるようにすることです。この次の学期のクラスのコース番号を過去の教科書注文のコース番号と比較し、今学期に教えられているクラスのみを抽出するクエリがあります。それが私が迷子になるところです。
以下を含むテーブルがあります。
- 教授
- コース番号
- 年
- 本のタイトル
データは次のようになります。
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 年かなど)、3 冊の本すべてが表示されるようにします。ただし、レコード セットを正しい方法で考えているかどうかはわかりません。
これまでの私の SQL は基本的なものであり、明らかに機能しません。
SELECT [All].Professor, [All].Course, Max([All].Year)
FROM [All]
GROUP BY [All].Professor, [All].Course;