다음을 통해 공유


자체 조인 사용

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

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

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

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

USE AdventureWorks2008R2;
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. 자체 조인을 사용하여 영업 사원과 해당 판매 지역 대조하기

다음 예에서는 Sales.SalesPerson 테이블의 자체 조인을 수행하여 모든 판매 지역 및 해당 영업 사원의 목록을 생성합니다.

SELECT st.Name AS TerritoryName, sp.BusinessEntityID, 
    sp.SalesQuota, sp.SalesYTD
FROM Sales.SalesPerson AS sp
    JOIN Sales.SalesTerritory AS st
        ON sp.TerritoryID = st.TerritoryID
ORDER BY st.Name, sp.BusinessEntityID