수동으로 Self-Joins 만들기(Visual Database Tools)
적용 대상:SQL Server
데이터베이스에 재귀적 관계가 없더라도 테이블을 자기 자신과 조인할 수 있습니다. 예를 들어 자체 조인을 사용하여 같은 도시에 거주하는 저자 쌍을 찾을 수 있습니다.
모든 조인과 마찬가지로 자체 조인에는 최소 두 개의 테이블이 필요합니다. 차이점은 쿼리에 두 번째 테이블을 추가하는 대신 동일한 테이블의 두 번째 인스턴스를 추가한다는 것입니다. 이렇게 하면 테이블의 첫 번째 인스턴스에 있는 열을 두 번째 인스턴스의 동일한 열과 비교할 수 있으므로 열의 값을 서로 비교할 수 있습니다. 쿼리 및 뷰 디자이너 테이블의 두 번째 인스턴스에 별칭을 할당합니다.
예를 들어 버클리 내에서 모든 작성자 쌍을 찾기 위해 자체 조인을 만드는 경우 테이블의 첫 번째 인스턴스에 있는 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
첫 번째 행은 쓸모가 없습니다. 셰릴 카슨이 셰릴 카슨과 같은 도시에 살고 있음을 나타냅니다. 두 번째 행은 똑같이 쓸모가 없습니다. 이 쓸모없는 데이터를 제거하려면 두 작성자 이름이 서로 다른 작성자를 설명하는 결과 행만 유지하는 다른 조건을 추가합니다. 결과 쿼리는 다음과 같을 수 있습니다.
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
그러나 두 개의 결과 행은 중복됩니다. 첫 번째는 카슨이 베넷과 같은 도시에 살고 있다고 말하고, 두 번째는 베넷이 카슨과 같은 도시에 살고 있다고 말합니다. 이 중복성을 제거하기 위해 두 번째 조인 조건을 "같지 않음"에서 "보다 작음"으로 변경할 수 있습니다. 결과 쿼리는 다음과 같을 수 있습니다.
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
수동으로 자체 조인을 만들려면
작업하려는 테이블 또는 테이블 반환 개체를 다이어그램 창에 추가합니다.
다이어그램 창에 동일한 테이블 또는 테이블 반환 개체가 다이어그램 창에 두 번 표시되도록 동일한 테이블을 다시 추가합니다.
쿼리 및 뷰 디자이너는 테이블 이름에 순차 번호를 추가하여 두 번째 인스턴스에 별칭을 할당합니다. 또한 쿼리 및 뷰 디자이너는 다이어그램 창에서 테이블 또는 테이블 반환 개체의 두 항목 사이에 조인 선을 만듭니다.
조인 선을 마우스 오른쪽 단추로 클릭하고 바로 가기 메뉴에서 속성 선택합니다.
속성 창에서 조인 조건 및 형식을 클릭하고, 속성의 오른쪽에 있는 줄임표(...)를 클릭합니다.
조인 대화 상자에서 필요에 따라 기본 키 간의 비교 연산자를 변경합니다. 예를 들어 연산자를 보다 작게(<)로 변경할 수 있습니다.
테이블 또는 테이블 반환 개체의 첫 번째 항목에서 기본 조인 열의 이름을 끌어서 두 번째 항목의 해당 열에 놓아 추가 조인 조건(예: authors.zip = authors1.zip)을 만듭니다.
출력 열, 검색 조건 및 정렬 순서와 같은 쿼리에 대한 다른 옵션을 지정합니다.
참고 항목
Self-Joins 자동 생성(Visual Database Tools)
조인을 사용하여 쿼리 (Visual Database Tools)