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