我很難根據最近的日期更新數據庫中的記錄,並且正在尋找一些指導。順便說一句,我是SQL新手。SQL - 根據最近日期更新記錄
作爲背景,我有一個帶有SQL Express的Windows窗體應用程序,並使用ADO.NET與數據庫交互。該應用程序旨在使用戶能夠定期檢查必須參加的各種課程(例如每6個月,每年等)的員工考勤情況。例如,他們可以撤回數據以查看上次員工參加某個課程的情況,並在員工最近完成課程時更新出席日期。
我有三個數據表:
- EmployeeDetailsTable - 員工名字的簡單列表,電子郵件地址等,每個都有唯一的ID
- CourseDetailsTable - 課程簡單的列表,每個都有唯一的ID(例如1 ,2,3等)
- AttendanceRecordsTable - 有3列{僱員,CourseID,AttendanceDate,評論}
對於任何給定過程中,僱員將具有attenda nce的歷史,即如果課程需要每年參加一次,那麼他們將擁有一個在公司工作多年的記錄。
我想要做的是更新給定員工的「評論」字段,並根據最近的出勤日期給出課程。什麼是「正確」的SQL語法?
我已經嘗試了很多東西(如下面),但不能得到它的工作:
UPDATE AttendanceRecordsTable
SET Comments = @Comments
WHERE AttendanceRecordsTable.EmployeeID = (SELECT EmployeeDetailsTable.EmployeeID FROM EmployeeDetailsTable WHERE (EmployeeDetailsTable.LastName [email protected] AND EmployeeDetailsTable.FirstName [email protected])
AND AttendanceRecordsTable.CourseID = (SELECT CourseDetailsTable.CourseID FROM CourseDetailsTable WHERE CourseDetailsTable.CourseName [email protected]))
GROUP BY MAX(AttendanceRecordsTable.LastDate)
多的谷歌搜索後,我發現,MAX是一個聚合函數,所以我需要使用GROUP BY。我也嘗試使用HAVING關鍵字,但沒有成功。
任何人都可以指向正確的方向嗎?根據最近的日期更新數據庫記錄的「常規」語法是什麼?
date =(從表z中選擇max(date),其中z.FK = FK)總是一個很好的解決方案 – cjk 2009-09-12 11:39:17
+1 - 很好的解釋 – 2009-09-12 11:43:03
Marc - Thanbks的帖子。讓我給出一個結果,並返回結果... – 2009-09-12 11:52:48