w3 school 의 데이터베이스를 이용하였다.
나는 Orders 와 Customers 와 Shippers 라는 테이블을 갖고 있다.
이 세 개의 테이블을 한번에 join 하고 싶다.
<Orders>
<Customers>
<Shippers>
절차는 아래와 같다.
세 개의 테이블을 join 하기 위해선 두 번의 join 과정을 거치면 된다.
먼저 Orders.CustomerID = Customers.CustomerID 로 join 한다.
join 하고 나온 결과 테이블(Result 라고 하자)을 이용하여 아래처럼 다시 join 한다.
Result.ShipperID = Shippers.ShipperID 로 join 한다.
구체적인 쿼리는 아래와 같다.
SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperName FROM ((Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID) INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID); |
초록색이 첫번째 join , 파란색이 두번째 join 이다.
만약 이름이 헷갈린다면 as 를 사용하여 쉽게 만들 수 있다.
SELECT o.OrderID, c.CustomerName, s.ShipperName FROM ((Orders as o INNER JOIN Customers as c ON o.CustomerID = c.CustomerID) INNER JOIN Shippers as s ON o.ShipperID = s.ShipperID); |
SELECT o.OrderID, c.CustomerName, s.ShipperName FROM ((Orders as o INNER JOIN Customers as c ON o.CustomerID = c.CustomerID) as result INNER JOIN Shippers as s ON result.ShipperID = s.ShipperID); |
모두 같은 결과를 보인다.
'SQL' 카테고리의 다른 글
[SQL] Min 과 Order By limit 1 중 어느 것을 사용해야 할까? (0) | 2021.06.19 |
---|---|
[SQL] cheating sheet 정리 (0) | 2020.12.21 |
[SQL] null 일 때 다른값을 기준으로 정렬하기(order by) (0) | 2020.05.14 |
[SQL] self join 예제 (0) | 2020.05.13 |
[SQL] BETWEEN, IN 여러번 적용하기 (0) | 2020.05.06 |