1. INNER JOIN

두 테이블의 교집합을 구한다.
ON절의 조건이 일치하는 결과만 출력된다.

 

SELECT * 
   FROM TableA A
     INNER JOIN TableB B ON A.key = B.key

> INNER JOIN 뒤에는 어떤 테이블과 JOIN할 것인지 작성한다.

> ON 뒤에는 연결되는 테이블의 컬럼을 작성한다. 

구문 설명
ON  A.key = B.key  A의 key(컬럼명)와 B의 key(컬럼명)로 연결한다.

>SELECT 뒤에는 어떤 테이블의 컬럼을 출력할지 적어야 한다.

구문 설명
SELECT  * A와 B 두 테이블의 전체 컬럼이 출력
SELECT  A.* A의 전체 컬럼이 출력
SELECT  B.* B 전체 컬럼이 출력

 

 


 

[직접 해보기]

 

Orderdetails

OrderDetailID OrderID ProductID Quantity
1 10248 11 12
2 10248 42 10
3 10248 72 5
4 10249 14 9
5 10249 51 40
6 10250 41 10
7 10250 51 35
8 10250 65 15
:
:
:
:
:
:
:
:

 

Orders

OrderID CustomerID EmployeeID OrderDate ShipperID
10248 90 5 1996-07-04 3
10249 81 6 1996-07-05 1
10250 34 4 1996-07-08 2
10251 84 3 1996-07-08 1
10252 76 4 1996-07-09 2
10253 34 3 1996-07-10 2
:
:
:
:
:
:
:
:
:
:

 

[ Orderdetails 테이블과 Orders 테이블의 INNER JOIN ]

 어떤 고객이 어떤 물건을 샀는지 구하기

 

1) 전체 컬럼을 SELECT 

SELECT * 
FROM orderdetails
	INNER JOIN orders ON orders.orderID = orderdetails.orderID

출력결과

OrderDetailID OrderID ProductID Quantity CustomerID EmployeeID OrderDate ShipperID
1 10248 11 12 90 5 1996-07-04 3
2 10248 42 10 90 5 1996-07-04 3
3 10248 72 5 90 5 1996-07-04 3
4 10249 14 9 81 6 1996-07-05 1
5 10249 51 40 81 6 1996-07-05 1
6 10250 41 10 34 4 1996-07-08 2
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:

> OrderID로 두 테이블을 INNER JOIN하였다.

> 왼쪽에는 Orderdetails테이블의 컬럼이,

   오른쪽에는 Orders테이블의 컬럼이 출력된다. 

   (INNER JOIN 뒤에 작성한 테이블이 오른쪽에 위치한다.)

 

 

 

2)  CustomerID, OrderID, ProductID 컬럼을 SELECT

SELECT A.CustomerID, B.OrderID, B.ProductID
FROM orderdetails B
	INNER JOIN orders A ON A.orderID = B.orderID

출력결과

CustomerID OrderID ProductID
90 10248 11
90 10248 42
90 10248 72
81 10249 14
:
:
:
:
:
:

> SELECT절에 orders 테이블의 컬럼을 먼저 작성하였기 때문에

   orders 테이블의 컬럼이 왼쪽에 위치한다.

 

 

참고) INNER JOIN 관련 문제

2023.05.19 - [Test/SQL] - Symmetric Pairs (INNER JOIN, GROUP BY, HAVING, ORDER BY)

2023.05.16 - [Test/SQL] - Average Population of Each Continent (INNER JOIN, GROUP BY, AVG, FLOOR)

2023.05.16 - [Test/SQL] - African Cities (INNER JOIN, WHERE)

 

 


 

2. SELF JOIN

자신의 테이블과 JOIN한다.
AS를 사용하여 테이블을 구분하여 작성한다.
SELECT *
FROM TableC AS A
   INNER JOIN TableC AS B ON A.key = B.key

> SELF JOIN과 관련된 문제를 만들기가 어려워 해커랭크에서 풀었던 문제의 링크를 넣었다.

 

참고) SELF JOIN 관련 문제

2023.05.16 - [Test/SQL] - Rising Temperature (DATE_ADD, SELF JOIN, WHERE)

 

 

 

+ Recent posts