SELF JOIN이란 무엇이며 언제 사용합니까? [복제]
중복 가능성 :
SQL : 자체 조인 설명
셀프 조인이란 무엇이며 언제 사용합니까? 나는 자기 조인을 이해하지 못하므로 예를 들어 평신도 설명이 좋을 것입니다.
테이블이 데이터 자체를 참조 할 때 자체 조인을 사용합니다.
예를 들어, Employee
테이블 SupervisorID
에는 현재 직원의 상사 인 직원을 가리키는 열이 있을 수 있습니다 .
데이터를 쿼리하고 한 행에서 두 사람에 대한 정보를 얻으려면 다음과 같이 자체 조인 할 수 있습니다.
select e1.EmployeeID,
e1.FirstName,
e1.LastName,
e1.SupervisorID,
e2.FirstName as SupervisorFirstName,
e2.LastName as SupervisorLastName
from Employee e1
left outer join Employee e2 on e1.SupervisorID = e2.EmployeeID
한 가지 전형적인 예는 직원 및 직속 관리자 목록을 가져 오려는 경우입니다.
select e.employee as employee, b.employee as boss
from emptable e, emptable b
where e.manager_id = b.empolyee_id
order by 1
기본적으로 동일한 테이블에 저장된 행간에 관계가있는 경우에 사용됩니다.
- 직원.
- 다단계 판매.
- 기계 부품.
등등...
자체 조인은 단순히 테이블을 자신과 조인하는 것입니다. SELF JOIN
키워드 가 없으며 조인에 관련된 두 테이블이 동일한 테이블 인 일반 조인을 작성하면됩니다. 한 가지주의 할 점은 자체 조인을 할 때 테이블에 별칭을 사용해야한다는 것입니다. 그렇지 않으면 테이블 이름이 모호합니다.
예를 들어 상위-하위 관계와 같이 동일한 테이블의 행 쌍을 상관시키려는 경우 유용합니다. 다음 쿼리는 'Kitchen'범주의 모든 직계 하위 범주 이름을 반환합니다.
SELECT T2.name
FROM category T1
JOIN category T2
ON T2.parent = T1.id
WHERE T1.name = 'Kitchen'
SQL 자체 조인은 단순히 테이블을 자신에 조인하는 데 사용되는 일반 조인입니다.
예:
Select *
FROM Table t1, Table t2
WHERE t1.Id = t2.ID
예를 들어 managerid가 동일한 테이블의 employeeid에 대한 외래 키인 직원 테이블과 같이 자신을 "참조하는"테이블에 셀프 조인을 사용합니다.
예:
SELECT E.name, ME.name AS manager
FROM dbo.Employees E
LEFT JOIN dbo.Employees ME
ON ME.employeeid = E.managerid
참고 URL : https://stackoverflow.com/questions/3362038/what-is-self-join-and-when-would-you-use-it
'Programing' 카테고리의 다른 글
PHP의 GDlib imagecopyresampled를 사용할 때 PNG 이미지 투명도를 유지할 수 있습니까? (0) | 2020.08.23 |
---|---|
Python에서 소스 파일 이름 및 줄 번호를 기록하는 방법 (0) | 2020.08.23 |
Ipython 노트북 / Jupyter에서 Pandas는 내가 플롯하려는 그래프를 표시하지 않습니다. (0) | 2020.08.23 |
Python : 튜플의 값 변경 (0) | 2020.08.23 |
문자열이 배열입니까? (0) | 2020.08.23 |