본문 바로가기
my_lesson/_SQL

SQL - JOIN

by boolean 2016. 2. 25.
728x90

SQL Joins

SQL joins는 다른 테이블로 부터 행을 가져와 합치는 것이다. 두 테이블 사이에 공통이 되는 필드를 기본으로 한다. 

 

보통 join의 타입은 SQL INNER JOIN 으로 볼 수 있다. 

 

SQL INNER JOIN은 여러 테이블로부터 조건이 맞는 부분의 모든 행을 가져온다. 

 

SQL INNER JOIN Syntax

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;

or:

SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name=table2.column_name;

 

보통 INNER JOIN은 JOIN을 나타낸다ㅏ. 

 

예를 들어보면

id name       id  name -- ----       --  ---- 1  Pirate     1   Rutabaga 2  Monkey     2   Pirate 3  Ninja      3   Darth Vader 4  Spaghetti  4   Ninja

다음과 같은 두 테이블이 있다. 첫 번째 있는 것을 TableA, 두 번째 것을 TableB라고 보겠다. 

위의 상황을 아래 벤다이어그램으로 나타내면 다음과 같다. 

 

 

 

TableA의 id 1, 3번이, TableB에 id 2, 4번과 겹치는 부분이 있다. 

SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name id name id name -- ---- -- ---- 1 Pirate 2 Pirate 3 Ninja 4 Ninja
INNER JOIN을 사용해서 TableA와 TableB에서 매치되는 부분을 나타낸다.
ON 대신 WHERE를 사용해도 같은 결과를 볼 수 있다. 

JOIN 결과물 DB에 저장하기

Insert Into #TempResult
select CountA, CountB, CountC  from

(
select Count(A_Id) as CountA, 1 as commonId from tableA
  where ....
  and  ...
  and   ...
) as tempA

inner join
(
select Count(B_Id) as CountB, 1 as commonId from tableB
  where ...
  and ...
  and  ...
 ) as tempB

on tempA.commonId = tempB.commonId

inner join
(
select Count(C_ID) as CountC, 1 as commonId from tableC
where ...
and   ...
) as tempC

on tmepB.commonId = tempC.commonId

--view insert result
select * from #TempResult

 

'my_lesson > _SQL' 카테고리의 다른 글

SQL - IN  (0) 2016.02.25
SQL - BETWEEN  (0) 2016.02.25
SQL - LEFT JOIN  (0) 2016.02.25
SQL - UNION  (0) 2016.02.25
SQL - DROP  (0) 2016.02.25

댓글