저장을 습관화

SQL - FULL JOIN, SELF JOIN 본문

공부/데이터베이스

SQL - FULL JOIN, SELF JOIN

ctrs 2023. 12. 9. 21:14

1. FULL JOIN

왼쪽 테이블(table 1)과 오른쪽 테이블(table 2) 레코드에 일치하는 항목이 있는 경우

모든 레코드를 반환한다.

FULL OUTER JOIN 이라고도 하며, 잠재적으로 매우 큰 결과 집합을 반활할 수 있다.

 

예시 테이블 Customers)

CustomerID CustomerName ContactName Address City PostalCode Country
1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany
2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 México D.F. 5021 Mexico
3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México D.F. 5023 Mexico

 

예시 테이블 Orders)

OrderID CustomerID EmployeeID OrderDate ShipperID
10308 2 7 1996-09-18 3
10309 37 3 1996-09-19 1
10310 77 8 1996-09-20 2

 

예시)

select Customers.CustomerName, Orders.OrderID
from Customers
full outer join Orders
on Customers.CustomerID = Orders.CustomerID
order by Customers.CustomerName

 

참고: FULL OUTER JOIN 키워드는 다른 테이블의 일치 여부에 관계 없이

두 테이블 모두에서 일치하는 모든 레코드를 반환한다.

 

따라서 Orders에 일치 항목이 없는 Customers 행이 있거나,

Customers에 일치 항목이 없는 Orders 행이 있는 경우 해당 행도 나열된다.

 

 

2. SELF JOIN

하나의 테이블 내에서 자기 자신과의 조인을 수행한다.

테이블 내에서 서로 다른 행 간의 관계를 찾을때 유용하다.

 

예시 테이블 Customers)

CustomerID CustomerName ContactName Address City PostalCode Country
1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany
2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 México D.F. 5021 Mexico
3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México D.F. 5023 Mexico

 

예시) 동일한 도시에서 서로 다른 고객을 검색하고, 그들의 정보를 비교한다.

select A.CustomerName as CustomerName1, B.CustomerName as CustomerName2, A.City
from Customers A, Customers B
where A.CustomerID <> B.CustomerID
and A.City = B.City
order by A.City

이하 생략..

 

예시 테이블 Employee)

EmployeeID EmployeeName ManagerID
1 John 3
2 Jane 1
3 Tom NULL
4 Alice 3
5 Bob 1

 

예시) 각 직원과 그 직원의 상사를 조회한다.

select e.EmployeeName as Employee, m.EmployeeName as Manager
from Employee e
left join Employee m 
on e.ManagerID = m.EmployeeID

 

Employee Manager
John Tom
Jane John
Tom NULL
Alice Tom
Bob John

'공부 > 데이터베이스' 카테고리의 다른 글

객체 관계 데이터베이스 ORDBMS  (0) 2024.01.08
RDBMS와 ORDBMS  (0) 2024.01.08
SQL - LEFT JOIN, RIGHT JOIN  (0) 2023.12.09
SQL - INNER JOIN  (0) 2023.12.08
SQL - JOINS  (0) 2023.12.08