저장을 습관화
SQL - LEFT JOIN, RIGHT JOIN 본문
1. LEFT JOIN
왼쪽 테이블(table 1)의 모든 레코드와 오른쪽 테이블(table 2)의 일치하는 레코드를 반환한다.
일치하는 항목이 없다면 오른쪽 테이블에서는 아무것도 가져오지 않는다.
오라클에서는 'LEFT 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
left join Orders
on Customers.CustomerID = Orders.CustomerID
order by Customers.CustomerName
이하 생략..
참고: LEFT JOIN 키워드는 오른쪽 테이블(Orders)에 일치하는 항목이 없더라도
왼쪽 테이블(Customers)의 모든 레코드를 반환한다.
2. RIGHT JOIN
오른쪽 테이블(table 2)의 모든 레코드와 왼쪽 테이블(table 1)의 일치하는 레코드를 반환한다.
일치하는 항목이 없다면 왼쪽 테이블에서는 아무것도 가져오지 않는다.
오라클에서는 'RIGHT OUTER JOIN'이라고 부른다.
예시 테이블 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 |
예시 테이블 Employees)
EmployeeID | LastName | FirstName | BirthDate | Photo |
1 | Davolio | Nancy | 12/8/1968 | EmpID1.pic |
2 | Fuller | Andrew | 2/19/1952 | EmpID2.pic |
3 | Leverling | Janet | 8/30/1963 | EmpID3.pic |
예시)
select Orders.OrderID, Employees.LastName, Employees.FirstName
from Orders
right join Employees
on Orders.EmployeeID = Employees.EmployeeID
order by Orders.OrderID
이하 생략..
참고: RIGHT JOIN 키워드는 왼쪽 테이블(Orders)에 일치하는 항목이 없더라도
오른쪽 테이블(Employees)의 모든 레코드를 반환한다.
'공부 > 데이터베이스' 카테고리의 다른 글
RDBMS와 ORDBMS (0) | 2024.01.08 |
---|---|
SQL - FULL JOIN, SELF JOIN (0) | 2023.12.09 |
SQL - INNER JOIN (0) | 2023.12.08 |
SQL - JOINS (0) | 2023.12.08 |
SQL - ANY, ALL (0) | 2023.12.07 |