2013-10-31 164 views
1

我在問的項目是給老師發一封電子郵件,詢問他們爲下一學期教授的課程使用什麼書,以便訂購書籍。我有一個查詢,將即將到來的學期課程的課程編號與歷史教科書課程的課程編號進行比較,僅提取本學期所教授的課程。那就是我迷失的地方。VBA/SQL記錄集

我有一個包含以下內容的表:

  • 教授
  • 課程編號
  • 書名

的數據是這樣的:

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 

我想我應該爲每個老師一個記錄集,並在那,另一個記錄每門課程數設置。在課程編號記錄集中,我需要系統來確定最高年份編號是什麼 - 可能將其存儲在變量中?然後抽出所有相關記錄,這樣如果老師在最後一次教他們上課時(無論是2013年還是2012年等),他們會訂購3本書,所有三本書都會顯示。不過,我不確定我是否正確地考慮了唱片集。

我的SQL到目前爲止是基本的和顯然不工作:

SELECT [All].Professor, [All].Course, Max([All].Year) 
FROM [All] 
GROUP BY [All].Professor, [All].Course; 

回答

2

使用您的查詢作爲子查詢和INNER JOIN它回到[ALL]表來篩選行。

SELECT 
    a.Professor, 
    a.Year, 
    a.Course, 
    a.title 
FROM 
    [ALL] AS a 
    INNER JOIN 
     (
      SELECT [All].Professor, [All].Course, Max([All].Year) AS MaxOfYear 
      FROM [All] 
      GROUP BY [All].Professor, [All].Course 
     ) AS sub 
    ON 
      a.Professor = sub.Professor 
     AND a.Course = sub.Course 
     AND a.Year = sub.MaxOfYear; 
+0

非常感謝,漢斯。完美的作品。 – intruesiive