Share via


자체 조인 사용

자체 조인에서 테이블을 자체 조인할 수 있습니다. 한 테이블의 레코드를 동일한 테이블의 다른 레코드와 결합하는 결과 집합을 만들려는 경우 자체 조인을 사용합니다. 동일한 쿼리에서 하나의 테이블을 두 번 나열하려면 하나 이상의 테이블 이름 인스턴스에 대해 테이블 별칭을 제공해야 합니다. 쿼리 프로세서는 이 테이블 별칭을 통해 테이블의 오른쪽 또는 왼쪽 버전의 데이터를 열에 표시할지 결정할 수 있습니다.

1. 자체 조인을 사용하여 여러 공급업체에서 제공하는 제품 찾기

다음 예에서는 자체 조인을 사용하여 여러 공급업체에서 제공하는 제품을 찾을 수 있습니다.

이 쿼리는 ProductVendor 테이블의 자체 조인을 수반하므로 ProductVendor 테이블이 두 가지 역할로 나타납니다. 이 두 역할을 구분하려면 FROM 절에서 ProductVendor 테이블에 두 개의 다른 별칭(pv1과 pv2)을 지정해야 합니다. 별칭은 쿼리의 나머지 부분에서 열 이름을 한정하는 데 사용됩니다. 다음은 자체 조인 Transact-SQL 문의 예입니다.

USE AdventureWorks;
GO
SELECT DISTINCT pv1.ProductID, pv1.VendorID
FROM Purchasing.ProductVendor pv1
    INNER JOIN Purchasing.ProductVendor pv2
        ON pv1.ProductID = pv2.ProductID
        AND pv1.VendorID <> pv2.VendorID
ORDER BY pv1.ProductID

2. 자체 조인을 사용하여 직원과 해당 관리자 대조하기

다음 예에서는 HumanResources.Employee 테이블의 자체 조인을 수행하여 모든 관리자 및 모든 관리자에게 보고하는 직원의 목록을 생성합니다.

SELECT MgrTable.LoginID AS ManagerName,EmplTable.ManagerID, 
    EmplTable.LoginID, EmplTable.EmployeeID
FROM HumanResources.Employee AS EmplTable
    JOIN HumanResources.Employee AS MgrTable
        ON EmplTable.ManagerID = MgrTable.EmployeeID
ORDER BY MgrTable.LoginID, EmplTable.LoginID