다음을 통해 공유


방법: 자체 조인 수동으로 만들기

데이터베이스에서 테이블에 반사 관계가 없는 경우에도 테이블을 자체 조인할 수 있습니다. 예를 들어, 자체 조인을 사용하여 같은 도시에 살고 있는 만든 이 쌍을 찾을 수 있습니다.

다른 조인과 마찬가지로 자체 조인에도 테이블이 두 개 이상 필요합니다. 차이점은 쿼리에 두 번째 테이블을 추가하지 않고 같은 테이블의 두 번째 인스턴스를 추가한다는 점입니다. 이런 방식으로 테이블의 첫 번째 인스턴스의 열을 두 번째 인스턴스의 같은 열과 비교하여 열의 값을 서로 비교할 수 있습니다. 쿼리 및 뷰 디자이너는 테이블의 두 번째 인스턴스에 별칭을 할당합니다.

예를 들어, Berkeley에 살고 있는 모든 만든 이 쌍을 찾는 자체 조인을 만드는 중인 경우 테이블의 첫 번째 인스턴스의 city 열과 두 번째 인스턴스의 city 열을 비교합니다. 완성된 쿼리는 다음과 같습니다.

   SELECT 
         authors.au_fname, 
         authors.au_lname, 
         authors1.au_fname AS Expr2, 
         authors1.au_lname AS Expr3
      FROM 
         authors 
            INNER JOIN
            authors authors1 
               ON authors.city 
                = authors1.city
      WHERE
         authors.city = 'Berkeley'

자체 조인을 만들 때 조인 조건이 여러 개 필요한 경우가 종종 있습니다. 이유를 알아보려면 이전 쿼리의 결과를 살펴보십시오.

   Cheryl Carson       Cheryl Carson
   Abraham Bennet      Abraham Bennet
   Cheryl Carson       Abraham Bennet
   Abraham Bennet      Cheryl Carson

첫 번째 행은Cheryl Carson이 Cheryl Carson과 같은 도시에 살고 있음을 나타내므로 필요하지 않습니다. 마찬가지로 두 번째 행도 필요하지 않습니다. 이런 필요 없는 데이터를 제거하려면 두 개의 만든 이 이름이 서로 다른 만든 이를 나타내는 결과 행만 보유하는 다른 조건을 추가합니다. 완성된 쿼리는 다음과 같습니다.

   SELECT 
         authors.au_fname, 
         authors.au_lname, 
         authors1.au_fname AS Expr2, 
         authors1.au_lname AS Expr3
      FROM 
         authors 
            INNER JOIN
            authors authors1 
               ON authors.city 
                = authors1.city
               AND authors.au_id
                <> authors1.au_id
      WHERE
         authors.city = 'Berkeley'

결과 집합이 다음과 같이 향상되었습니다.

   Cheryl Carson       Abraham Bennet
   Abraham Bennet      Cheryl Carson

하지만 두 결과 행이 중복됩니다. 첫 번째 행은 Carson이 Bennet과 같은 도시에 살고 있음을 나타내며 두 번째 행은 Bennet이 Carson과 같은 도시에 살고 있음을 나타냅니다. 이런 중복 결과를 제거하려면 두 번째 조인 조건을 "not equals"에서 "less than"으로 변경하면 됩니다. 완성된 쿼리는 다음과 같습니다.

   SELECT 
         authors.au_fname, 
         authors.au_lname, 
         authors1.au_fname AS Expr2, 
         authors1.au_lname AS Expr3
      FROM 
         authors 
            INNER JOIN
            authors authors1 
               ON authors.city 
                = authors1.city
               AND authors.au_id
                < authors1.au_id
      WHERE
         authors.city = 'Berkeley'

결과 집합은 다음과 같습니다.

   Cheryl Carson       Abraham Bennet

참고

일부 Visual Studio 사용자 인터페이스 요소의 경우 다음 지침에 설명된 것과 다른 이름 또는 위치가 시스템에 표시될 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 Visual Studio 설정을 참조하십시오.

자체 조인을 수동으로 만들려면

  1. 작업할 테이블 또는 테이블 반환 개체를 다이어그램 창에 추가합니다.

  2. 다이어그램 창에 같은 테이블 또는 테이블 반환 개체가 두 번 표시되도록 같은 테이블을 다시 추가합니다.

    쿼리 및 뷰 디자이너는 테이블 이름에 일련 번호를 추가하여 두 번째 인스턴스에 별칭을 할당합니다. 또한 쿼리 및 뷰 디자이너는 다이어그램 창 내에서 테이블 또는 테이블 반환 개체의 두 일치 항목 사이에 조인 선을 만듭니다.

  3. 조인 선을 마우스 오른쪽 단추로 클릭하고 바로 가기 메뉴에서 속성을 선택합니다.

  4. 속성 창에서 조인 조건 및 형식을 클릭하고 속성의 오른쪽에 있는 줄임표**(...)**를 클릭합니다.

  5. 필요한 경우 조인 대화 상자에서 기본 키 사이의 비교 연산자를 변경합니다. 예를 들어, 연산자를 보다 작음(<)으로 변경할 수 있습니다.

  6. 테이블 또는 테이블 반환 개체의 첫 번째 일치 항목에서 기본 조인 열의 이름을 끌어서 두 번째 일치 항목의 해당 열에 놓는 방법을 통해 추가 조인 조건(예: authors.zip = authors1.zip)을 만듭니다.

  7. 출력 열, 검색 조건, 정렬 순서 등의 기타 쿼리 옵션을 지정합니다.

참고 항목

작업

방법: 자체 조인 자동으로 만들기

기타 리소스

조인을 사용하여 쿼리