한 쿼리에서 테이블 두 번 사용

한 쿼리에서 동일한 테이블을 두 번 이상 사용할 수 있습니다.다음과 같은 경우가 있습니다.

  • 반사 관계로 자체 조인 만들기   반사 관계를 사용하여 테이블 자체를 조인할 수 있습니다. 반사 관계는 참조하는 외래 키 열과 참조되는 기본 키 열이 동일한 테이블에 있는 관계입니다.예를 들어 employee 테이블에 employee.manager_emp_id라는 추가 열이 있고 외래 키가 manager_emp_id 열에서 employee.emp_id 열까지 존재한다고 가정합니다.employee 테이블의 각 행에서 manager_emp_id 열은 직원의 상사를 나타냅니다.더 정확하게 말하면 직원 상사의 emp_id를 나타냅니다.

    이 반사 관계를 사용하여 테이블 자체를 조인하면 각 행에 상사 이름과 해당 상사에게 속한 직원 이름이 들어 있는 결과 집합을 만들 수 있습니다.결과 SQL은 다음과 같습니다.

    SELECT 
        boss.lname, 
        boss.fname, 
        employee.lname, 
        employee.fname
    FROM 
        employee
            INNER JOIN 
            employee boss 
            ON employee.manager_emp_id 
            =  boss.emp_id
    

    반사 관계를 사용하여 조인을 만드는 데 대한 자세한 내용은 방법: 자체 조인 자동으로 만들기를 참조하십시오.

  • 반사 관계를 사용하지 않고 자체 조인 만들기   반사 관계를 사용하지 않고 테이블 자체를 조인할 수 있습니다.예를 들어, 각 행에 직원과 해당 직원의 잠재적 관리자를 나타내는 결과 집합을 만들 수 있습니다.여기서 잠재적 관리자란 작업 수준이 한 단계 높은 직원을 의미합니다. 결과 SQL은 다음과 같습니다.

    SELECT 
        employee.fname, 
        employee.lname, 
        mentor.fname, 
        mentor.lname 
    FROM 
        employee 
            INNER JOIN 
            employee mentor 
            ON employee.job_lvl 
            <  mentor.job_lvl
    

    조인에서는 일치 이외의 다른 조건을 사용합니다.일치 이외의 다른 조건을 사용하여 테이블을 조인하는 방법에 대한 자세한 내용은 조인 비교 연산자를 참조하십시오.

    관련되지 않은 열을 사용하여 자체 조인을 만드는 데 대한 자세한 내용은 방법: 자체 조인 수동으로 만들기를 참조하십시오.

  • 자체 조인 없이 테이블 두 번 사용   자체 조인이 없어도 한 쿼리에서 같은 테이블을 두 번 이상 사용할 수 있습니다.예를 들어, 같은 저자의 여러 책 또는 좋아하는 책의 저자들이 들어 있는 결과 집합을 만들 수 있습니다.이 경우 titleauthors 테이블을 두 번 사용합니다. 한 번은 좋아하는 책의 저자들을 찾는 데 사용하고 다른 한 번은 해당 저자의 서로 다른 책들을 찾는 데 사용합니다.결과 SQL은 다음과 같습니다.

    SELECT 
        other_title.title
    FROM 
        titles favorite_title 
            INNER JOIN 
            titleauthor favorite_titleauthor 
            ON favorite_title.title_id 
            =  favorite_titleauthor.title_id 
                INNER JOIN 
                authors 
                ON favorite_titleauthor.au_id 
                =  authors.au_id 
                    INNER JOIN 
                    titleauthor other_titleauthor 
                    ON authors.au_id 
                    =  other_titleauthor.au_id 
                        INNER JOIN 
                        titles other_title 
                        ON other_titleauthor.title_id 
                        =  other_title.title_id 
    WHERE 
        favorite_title.title 
        = 'Is Anger the Enemy?' 
      AND 
        favorite_title.title 
        <> other_title.title 
    

    [!참고]

    한 테이블에서 여러 번 사용되는 쿼리를 구별하기 위해 앞의 쿼리에는 favorite_title, favorite_titleauthor, other_titleauthor, other_title 같은 별칭이 사용됩니다.별칭에 대한 자세한 내용은 방법: 테이블 별칭 만들기를 참조하십시오.

참고 항목

개념

결과 창에서 데이터 작업

기타 리소스

검색 기준 지정