的我有一個先進的查詢/報告,我需要幫助在Access 2007中創建 我需要生成的查詢是:高級查詢具有位邏輯
Employee Last, Employee First, Employee Role, Course Name, StartDate, EndDate, Attended
,我需要處理,這是邏輯:
- 如果用戶已經出席了employeerole = courserole課程, 參加=是
- 如果用戶還沒有參加的課程與Employeerole = courserole, 出席=沒有
- 如果用戶沒有參加並沒有具有匹配 CourseRole課程,與該角色
一些額外的邏輯,這將是很好的將是添加出席=否課程:培訓師最後選擇
邏輯:如果數據是空的,訓練員最後=沒有訓練員分配
它不會讓我發佈數據庫的圖片。因此,這裏是參照Entegrity表格:
Tables: Fields
Employee: Employee_PK, Employee_Last, Employee_first, Employee_userid
Role: Role_PK, RoleNAme
EmployeeRole: EmployeeRole_PK, Employee_ID, Role_ID
Location: Location_PK, Location
Course: Course_PK, StartDate, EndDate, CourseName, CourseNotes, Location_ID
CourseAttendance: CourseAttendance_PK, Course_ID, Employee_ID
CourseRole: CourseRole_PK, Course_ID, Role_ID
Trainer: Trainer_PK, TrainerLast, TrainerFirst
TrainerCourse:Trainer_PK, Trainer_ID, Course_ID
所以,你可以看到它的標準化,並且有多到許多需要哪些
PK是主鍵,ID被用作外鍵許多表。所以是的,這些都沒問題。
編輯:
該查詢被張貼在評論:
我已經嘗試了多個查詢。
SELECT qryEmployeeCoursesForRole.*, IIf(IsNull([courseattendance_PK]),"No","Yes") AS Attended
FROM qryEmployeeCoursesForRole
LEFT JOIN CourseAttendance
ON (qryEmployeeCoursesForRole.COURSE_ID = CourseAttendance.COURSE_ID)
AND (qryEmployeeCoursesForRole.EMPLOYEE_ID = CourseAttendance.EMPLOYEE_ID);
這一個犯規處理沒有規定當然除外 -
Course Table:
COURSE_PK START DATE END DATE COURSENAME NOTES LOCATION_ID
1 12/2/2012 12/2/2012 OTC No Notes 3
2 12/1/2012 12/1/2012 OTC No Note 2
3 1/5/2012 1/5/2012 Requistions Text Text Text 1
and P-Cards
CourseAttendance Table:
COURSEATTENDANCE_PK COURSE_ID EMPLOYEE_ID
1 1 1
2 2 2
CourseRole Table:
COURSEROLE_PK COURSE_ID ROLE_ID
1 1 1
2 1 2
3 1 3
4 2 1
5 2 2
Employee Table:
EMPLOYEE_PK EMPLOYEE_LAST EMPLOYEE_FIRST EMPLOYEE_USERID
1 Ables Christopher LG854
2 Ables Gary LC876
3 Ables Steven LQ875
EmployeeRole Table:
EMPLOYEEROLE_PK EMPLOYEE_ID ROLE_ID
1 1 1
2 1 2
3 1 3
4 2 1
5 2 2
6 3 4
Location Table:
LOCATION_PK LOCATION
1 New York
2 New Brunfels
3 Ontario
4 China
Role Table:
ROLE_PK ROLENAME
1 Service Coordinator
2 Service Planner
3 Service Entry
4 AP Invoice
Trainer Table:
TRAINER_PK TRAINER_LAST TRAINER_FIRST TRAINER_USERID
1 Brunet Janell
2 Gibson Jim hb476
3 Taylor Diana hblo7hg
TrainerCourse Table:
TRAINERCOURSE_PK TRAINER_ID COURSE_ID
1 1 1
2 1 2
3 2 2
現在,我已經在這個很多細節通過邏輯走到看來這需要的不僅僅是看中查詢更多。如果你需要我更具體,我可以但它會要求我上傳文件或其他東西。
所有查詢我創建和原因查詢:
EmployeeCourseOutsideofRole
SELECT CourseAttendance.EMPLOYEE_ID, CourseAttendance.COURSE_ID, Course.COURSE_NAME
FROM Course INNER JOIN (CourseAttendance LEFT JOIN qryEmployeeCoursesForRole ON
(CourseAttendance.COURSE_ID = qryEmployeeCoursesForRole.COURSE_ID) AND
(CourseAttendance.EMPLOYEE_ID = qryEmployeeCoursesForRole.EMPLOYEE_ID)) ON Course.COURSE_PK =
CourseAttendance.COURSE_ID
WHERE (((qryEmployeeCoursesForRole.EMPLOYEE_ID) Is Null) AND
((qryEmployeeCoursesForRole.COURSE_ID)
Is Null));
If Employee took a Course and the CourseRole not equal to EmployeeRole
EmployeeCoursesForRoleSub:
SELECT [Employee_last] & " " & [employee_first] AS FullName, Role.ROLENAME,
EmployeeRole.EMPLOYEE_ID, EmployeeRole.ROLE_ID
FROM Role INNER JOIN (Employee INNER JOIN EmployeeRole ON Employee.EMPLOYEE_PK =
EmployeeRole.EMPLOYEE_ID) ON Role.ROLE_PK = EmployeeRole.ROLE_ID;
This is a SubQuery only--for next
qryEmployeeCourseForRole:
SELECT qryEmployeeCoursesForRoleSub.*, CourseRole.COURSE_ID
FROM qryEmployeeCoursesForRoleSub LEFT JOIN CourseRole ON qryEmployeeCoursesForRoleSub.ROLE_ID =
CourseRole.ROLE_ID;
This shows courserole with matching employeerole--a subquery for next
EmployeeCourseForRoleWAttended:
SELECT qryEmployeeCoursesForRole.*, IIf(IsNull([courseattendance_PK]),"No","Yes") AS Attended
FROM qryEmployeeCoursesForRole LEFT JOIN CourseAttendance ON (qryEmployeeCoursesForRole.COURSE_ID =
CourseAttendance.COURSE_ID) AND (qryEmployeeCoursesForRole.EMPLOYEE_ID =
CourseAttendance.EMPLOYEE_ID);
個
用於調試
Employee Table:
Employee_PK Employee_Last Employee_First
Autonumber Daigle Jake
Autonumber Ryder Canen
Role Table:
Role_PK RoleName
5 Asset Shipper
6 Material Controller
7 Material MAnager
EmployeeRole Table:
EmployeeRole_PK Employee_ID Role_ID
Autonum Whatever Daigle is 5
Autonum Whatever Daigle is 1
Autonum Whatever Ryder is 5
Autonum Whatever Ryder is 6
Course Table:
Course_PK Course_Name Course_StartDate Course_EndDate
4 OTC 12/8/2011 12/9/2011
CourseRole Table:
CourseRole_PK Course_ID Role _ID
6 4 1
7 4 7
CourseAttendance:
CourseAttendance_PK Course_ID Employee_ID
Autonum 4 Whatever Daigle is
Autonum 4 Whatever Ryder is
確定附加採樣數據I張貼的樣本數據。如果用戶參加了滿足其角色之一的課程並且courserole = employeerole,那麼問題就會發生,那麼查詢報告他們已經完成了他們的所有角色。
我需要在一個單一的報告內容:
員工姓,僱員的名字,角色1,CoureName,開始日期,結束日期,出席 但邏輯將需要在那裏,因爲我有它上市以上在帖子的開頭。
有你的表有一些差異。首先,你在EmployeeRole中有一個名爲Role_ID的字段,就是你的Role表中的Role_PK?另外在你EmployeeRole表Employee_ID員工表中的Employee_PK或Employee_userid? – Taryn 2012-01-05 15:34:56
編輯您的問題併發布一些示例數據將會有幫助 – Taryn 2012-01-05 15:47:15
大多數人在說樣本數據時,都是指相關表格的一小部分被剪切並粘貼到問題中。 – Fionnuala 2012-01-05 16:29:34