【发布时间】:2016-09-11 02:50:18
【问题描述】:
我查看了各种帖子(this one、that one 和 this other one)并认为我得到了答案。
在LEFT JOIN 之后,我可以添加ON [condition] AND [other condition](我也尝试过WHERE)。但是电脑说不。 Access 一直说 join 表达式不受支持。
考虑下面的student_records 表:
STUDENTCODE | SEMESTERINDEX
12345 | 20112
12345 | 20113
12345 | 20121
67890 | 0
67890 | 20111
67890 | 20112
我想从我的students 表中找到每个学生的最小SEMESTERINDEX,大于 20001。(下面的记录可能是错误的,0 和 1 SEMESTERINDEX 用于转移学分。)
我正在使用访问,因此 SQL 中有 VBA 函数。我还加入了几个表,我引用了整个查询。
SELECT students.STUDENTCODE, prefixes.PREFIXNAMEENG,
students.STUDENTNAMEENG, students.STUDENTSURNAMEENG, levels.level_name, programs.PROGRAMNAMEENG, calendars.calendar_load,
MAX(student_records.SEMESTERINDEX) AS latest_semester, MIN(student_records.SEMESTERINDEX) AS intake_semester,
FROM student_records LEFT JOIN (
(
(
(
(students LEFT JOIN prefixes ON students.PREFIXID = prefixes.PREFIXID)
LEFT JOIN levels ON students.LEVELID = levels.level_id)
LEFT JOIN programs ON students.PROGRAMID = programs.PROGRAMID)
LEFT JOIN calendar_conversion ON students.SCHEDULEGROUPID = calendar_conversion.schedule_id)
LEFT JOIN calendars ON calendar_conversion.calendar_id = calendars.calendar_id) ON student_records.STUDENTCODE = students.STUDENTCODE AND student_records.SEMESTERINDEX> 2001
GROUP BY students.STUDENTCODE, prefixes.PREFIXNAMEENG, students.STUDENTNAMEENG, students.STUDENTSURNAMEENG, levels.level_name, programs.PROGRAMNAMEENG, calendars.calendar_load;
那么我是不是放错了AND student_records.SEMESTERINDEX > 2001?
【问题讨论】: