이 문서는 기계 번역을 이용하여 번역되었습니다. 문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문
Visual Studio 2017을 사용하는 것이 좋습니다.

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

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

  • 반사 관계로 자체 조인 만들기   반사 관계를 사용하여 테이블 자체를 조인할 수 있습니다. 반사 관계는 참조하는 외래 키 열과 참조되는 기본 키 열이 동일한 테이블에 있는 관계입니다. 예를 들어 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 같은 별칭이 사용됩니다. 별칭에 대한 자세한 내용은 방법: 테이블 별칭 만들기를 참조하십시오.

표시: