2016-09-11 1 views
0

저는 다양한 게시물 (this one, that onethis other one)을 조사해 보았습니다.Left Join On And 절이 지원되지 않습니다.

LEFT JOIN 뒤에 나는 ON [condition] AND [other condition]을 추가 할 수 있습니다 (나는 또한 WHERE을 시도했습니다). 그러나 컴퓨터는 이 아니며이라고 말합니다. 액세스는 조인 표현이 지원되지 않는다고 계속 말합니다..

아래 student_records 테이블 고려 :

STUDENTCODE | SEMESTERINDEX 
12345  | 20112 
12345  | 20113 
12345  | 20121 
67890  | 0 
67890  | 20111 
67890  | 20112 

내가 내 students 테이블에서 각 학생의 최소 SEMESTERINDEX를 찾으려면, 그 SEMESTERINDEX입니다 (아래 기록이 잘못 될 수있다 20001. 위의와 0과 1)

SQL 내부에 VBA 기능이 있으므로 액세스를 사용하고 있습니다. 제가 가입하고있는 테이블이 몇 개 더 있습니다. 전체 쿼리를 인용하고 있습니다.

그래서 나는 AND student_records.SEMESTERINDEX > 2001을 어디에 놓았습니까?

답변

0

오 이런 내 괄호와 미친 들여 쓰기를 구하십시오.

다음은 어떻게 사용하나요? 모든 괄호는 SQL

이것은 당신이 당신의 그룹화를 수행 할 수 있도록 SQL에서 하위 쿼리라고
SELECT 
    students.STUDENTCODE, 
    prefixes.PREFIXNAMEENG, 
    students.STUDENTNAMEENG, 
    students.STUDENTSURNAMEENG, 
    levels.level_name, 
    programs.PROGRAMNAMEENG, 
    calendars.calendar_load, 
    minmax.latest_semester, 
    minmax.intake_semester, 
FROM student_records 
LEFT JOIN (
    SELECT 
    studentcode, 
    MAX(student_records.SEMESTERINDEX) AS latest_semester, 
    MIN(student_records.SEMESTERINDEX) AS intake_semester 
    FROM students 
    WHERE students.STUDENTCODE > 2001 
    GROUP BY studentcode 
) as MinMax ON student_records.STUDENTCODE = minmax.STUDENTCODE 
LEFT JOIN students ON student_records.STUDENTCODE = students.STUDENTCODE 
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 

에 문제가되지 않는 하위 설정하고 데이터의 나머지 부분이 다시 가입 할 수 있습니다.

저는 필터가 필요한 조인에 대해 뭔가 잘못 생각했다고 생각합니다. 실제로 필터링에 필요한 데이터에 합류했습니다.

+1

"Access에서 SQL에서"모든 괄호는 중요하지 않습니다. " 조인 된 테이블을 괄호 안에 넣어야하는 것에 대한 액세스는 까다 롭습니다. –

+0

@DStanley - 아니요. 액세스가 그들과 함께 쿼리를 표시합니다,하지만 만약 당신이 그들을 데리고 제트 엔진에 보내면 그것은 잘 작동합니다 - 결국 SQL 시스템입니다. 모든 쓰레기를 넣는 것은 쿼리 작성기 엔진입니다. – Hogan

+0

기본적으로 student_record에서 학생 코드 당 최소 및 최대 값을 계산하고 결과를 minmax 테이블에 랩핑 한 다음 해당 테이블을 student_record에 조인합니다. 권리? – Benjamin