[SQL] SQL Join에 대한 이해

# Table A

select * from A

/*--------------------------------------------------------

id username

1 홍길동

2 일지매

3 강감찬

--------------------------------------------------------*/


# Table B

select * from B

/*--------------------------------------------------------

no user_id school

1 1 서울대

2 2 부산대

3 2 동아대

--------------------------------------------------------*/



# Table C

select * from C

/*--------------------------------------------------------

no user_id school

1 1 전자과

2 2 화학과

3 3 무역과

        4      3              기계과

--------------------------------------------------------*/



# A와 B의 id가 같은(즉, 공통부분만) Row

select 

A.id,A.username,B.school 

from 

A join B on A.id = B.user_id

-- 중요한것은 B에 user_id가 같은 것이 여러개 있다면 id가 같은 Row가 여러개 나온다

/*--------------------------------------------------------

id username school

1 홍길동 서울대

2 일지매 부산대

2 일지매 동아대

--------------------------------------------------------*/




# 모든 A의 Row - 기준 테이블(A)에 B정보를 붙임

select 

A.id,A.username,B.school 

from 

A left join B on A.id = B.user_id

-- 중요한것은 B에 user_id가 같은 것이 여러개 있다면 id가 같은 Row가 여러개 나온다

/*--------------------------------------------------------

id username school

1 홍길동 서울대

2 일지매 부산대

2 일지매 동아대

3 강감찬 NULL

--------------------------------------------------------*/




# 모든 B의 Row - 기준 테이블(B)에 A정보를 붙임

select 

A.id,A.username,B.school 

from 

A right join B on A.id = B.user_id

-- 중요한것은 B에 user_id가 같은 것이 여러개 있다면 id가 같은 Row가 여러개 나온다

/*--------------------------------------------------------

id username school

1 홍길동 서울대

2 일지매 부산대

2 일지매 동아대

--------------------------------------------------------*/


# 모든 B의 Row

select 

A.id,A.username,B.school 

from 

A inner join B on A.id = B.user_id

-- join 과 동일 (inner join = join)

-- 표준 SQL과는 달리 MySQL에서는 JOIN, INNER JOIN, CROSS JOIN이 모두 같은 의미로 사용됩니다.

-- 아래처럼 표현할수도 있다면

select 

A.id,A.username,B.school 

from 

A , B

where

A.id = B.user_id


/*--------------------------------------------------------

id username school

1 홍길동 서울대

2 일지매 부산대

2 일지매 동아대

--------------------------------------------------------*/




SELECT a.id,a.username,b.school,c.major

from 

A as a

left join B as b ON a.id = b.user_id

left join C as c ON a.id = c.user_id

/*--------------------------------------------------------

id username school major

1 홍길동 서울대 전자과

2 일지매 부산대 화학과

2 일지매 동아대 화학과

3 강감찬 NULL 무역과

3 강감찬 NULL 기계과

--------------------------------------------------------*/



a00c4b81dc1276f3aa14d32762c1e171.png
c69bd40e5320cb41d68300d5381e0577.png
 
0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기
captcha
자동등록방지 숫자입력

웹개발

번호 제목 글쓴이 날짜 조회수
82 [PHP] empty vs is_null vs is_set 비교 최고관리자 09-11 1,260
81 [Font] Every Font Awesome 4.7.0 Icon, CSS Class, & Unicode 최고관리자 08-19 1,296
80 [PHP] 문자열을 구분자로 구분하여 배열로 만들때 whitespace trim시키기 최고관리자 07-29 1,268
79 [PHP] $_SERVER['SERVER_NAME'] vs $_SERVER['HTTP_HOST'] 최고관리자 07-23 1,592
78 [css] Layout을 제대로 하고 싶다면 Flex 와 Grid를 배워보자 최고관리자 07-20 1,697
77 [PHP] define 중복으로 인한 Internal Server Error 500 최고관리자 07-16 1,213
76 [MySQL] Procedure & View 확인 최고관리자 05-25 1,213
75 [JavaScript] JQuery를 이용한 Drag Drop 리스트 순서변경 최고관리자 05-21 2,936
74 [JavaScript] defer 와 async 최고관리자 05-14 1,280
73 [JavaScript] 홈페이지에 날개를 달자 -2 최고관리자 04-26 1,228
72 [HTML] URL 사용 규칙 최고관리자 03-30 1,279
71 [JS] 자바스크립트 쿠키 클래스 최고관리자 03-19 1,306
70 [MySql] mysql error 메세지 모음 최고관리자 03-11 2,979
69 [PHP] TCP Socket Server +2 최고관리자 03-05 3,129
68 [JS] 문자열로 전송된 함수명을 실행하는 방법 최고관리자 02-26 1,687
67 [Javascript] 홈페이지에 날개를 달자 - Animation & Scrolll 효과 Plugin 최고관리자 02-21 1,239
66 [Form] Submit 버턴 만들어 입력데이타 검사하고 Submit 하기. 최고관리자 01-13 1,253
65 [MySQL] Join 걸어서 Update하기 최고관리자 01-07 1,369
64 [Docker] MedDream DICOM Viewer for Orthanc PACS server 최고관리자 01-05 1,855
63 [Docker] 도커 도메인 여러개 사용하기 (Docker multi Domain) (웹서버 여러개) 최고관리자 01-05 5,979