>

안녕하세요,이 SQL 문에서 구문 오류가 발생합니다. 누구나 감사를 표할 수 있습니까?

String sql = "Select tblStudent.*,tblSchool.*,tblAgents.* " +
    "FROM tblStudent LEFT JOIN tblSchool " +
    "ON (tblStudent.schoolID = tblSchool.schoolID) " +
    "LEFT JOIN tblAgents " +
    "ON (tblStudent.agentID = tblAgents.agentID) " +
    "WHERE tblStudent.StudentID='" + studentID + "'";

여러 조인을 할 수 있기를 바랐습니다

하지만 구문 오류가 발생합니다.

  • 답변 # 1

    액세스의 경우 여러 조인이있는 괄호는 다음을 의미합니다. 세 개의 조인이 있으면 from 뒤에 두 개의 왼쪽 괄호가 있습니다. 마지막 조인에는 올바른 괄호가 없습니다.

    String sql = "Select tblStudent.*,tblSchool.*,tblAgents.* " +
    "FROM (tblStudent LEFT JOIN tblSchool " +
    "ON (tblStudent.schoolID = tblSchool.schoolID)) " +
    "LEFT JOIN tblAgents " +
    "ON (tblStudent.agentID = tblAgents.agentID) " +
    "WHERE tblStudent.StudentID='" + studentID + "'";
    
    

    액세스 SQL 인젝션은 다른 스레드에서 다루어졌습니다.

  • 답변 # 2

           String sql = "Select 
            tblStudent.StudentID,tblStudent.studentFirstName,"+
            tblStudent.studentLastName,tblSchool.schoolName," + 
            tblAgents.agentFirstName,tblAgents.agentLastName " +
            "FROM (tblStudent LEFT JOIN tblSchool " +
            "ON (tblStudent.schoolID = tblSchool.schoolID)) " +
            "LEFT JOIN tblAgents " +
            "ON (tblStudent.agentID = tblAgents.agentID) " +
            "WHERE tblStudent.StudentID=@studentID";
    
    

  • 답변 # 3

    최종 SQL은 다음과 같아야합니다.

    SELECT tblStudent.*
        ,tblSchool.*
        ,tblAgents.*
    FROM tblSchool
    RIGHT JOIN (
        tblAgents RIGHT JOIN tblStudent ON tblAgents.agentID = tblStudent.agentID
        ) ON tblSchool.schoolID = tblStudent.schoolID
    WHERE tblStudent.StudentID=111;
    
    

    이 SQL을 만들기위한 VBA 코드는

    Dim sql As String
    sql = "SELECT tblStudent.* ,tblSchool.* ,tblAgents.* " & _
        "FROM tblSchool RIGHT JOIN (" & _
        "tblAgents RIGHT JOIN tblStudent ON tblAgents.agentID = tblStudent.agentID" & _
        ") ON tblSchool.schoolID = tblStudent.schoolID " & _
        "WHERE tblStudent.StudentID=" & studentID
    
    

    여기서 studentID 라고 가정합니다  숫자 필드입니다. 또한 * 를 사용하지 않는 것이 좋습니다  둘 이상의 테이블에서 데이터를 선택하는 경우 그렇지 않은 경우 열 이름을 예측할 수없고 주석에서 언급 한대로 사용하지 않는 추가 자원이 필요합니다.

  • 이전 html5 - 라벨 크기가 다르기 때문에 다른 라인에 입력
  • 다음 c - GetConsoleWindow에 대한 정의되지 않은 참조