'join'에 해당되는 글 4건

  1. 2013.09.03 SQL RIGHT JOIN 구문 (1)
  2. 2013.09.02 SQL LEFT JOIN 구문
  3. 2013.08.31 SQL INNER JOIN 구문
  4. 2013.08.29 SQL JOIN 구문 (2)

SQL RIGHT JOIN 구문

SQL 2013.09.03 15:39

 

 

안녕하세요!! 

이번 포스팅에서는 JOIN 구문중에서 RIGHT JOIN 구문에 대해서 알아보겠습니다.

 

지난 포스팅에서 left join 구문을 설명했었는데 right join 구문은 반대라고 생각하시면 도움이 될듯합니다.

두 개의 테이블이 있다고 가정할경우 right join은 우측의 테이블을 포함한 교집합입니다.

아래 그림을 참조하시면 더 이해가 빠를거라 생각합니다.

 

 

이미지 출처 : w3schools

 

RIGHT JOIN 기본구문

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

// 위와 같이 조인 구문을 작성하면 그림과 같은 결과값이 나오게 됩니다.

// 내용이 이전 포스팅의 left join 구문의 설명과 많이 흡사하기 때문에 참조하시기 바라고 아래 예제로 어떻게 조인이 되는지 그리고 결과값은 어떻게 나오는지 자세히 알아보겠습니다.

 

  

order_id

p_num

employ_date

caree_year

1001

2

2003-02-02

5

1002

3

2004-02-17

6

// 위 테이블 이름은 임시로 ORDER 라고 정의하겠습니다.

 

 

p_num

name

age

mobile

1

송기종

42

010-1111-1111

2

신석호

41

010-2222-2222

3

이현주

35

010-3333-3333

// 테이블 이름을 임시로 INFO 라고 정의하겠습니다.

 

 

위 두개의 테이블을  RIGHT JOIN 하면  

select * from order

right join info

on order.p_num = info.p_num;

 

또는

 

select * from order A

right join info B

on A.p_num = B.p_num;

 

또는   

 

select * from order A

right outer join info B

on A.p_num = B.p_num;

 

결과값은

 order_id

 p_num

 employ_date

 caree_year

 p_num

name

age

mobile

 null

 null 

 null

 null

 1

송기종

42

010-1111-1111

 1001

 2 

 2003-02-02

 5

 2

신석호

41

010-2222-2222

 1002

 3

 2004-02-17

 6

 3

이현주

35

010-3333-3333

 

 LEFT JOIN과 틀린점을 발견하셨나요?

혹시 발견 못하셨다면 이전 left join 구문과 비교하며 확인해보시기 바랍니다.

댓글 주시는 분들중 실무에서 join 구문이 많이 사용되는지 질문 및 쪽지가 종종 들어옵니다. 사실 지금 PHP 로 프로그래밍을 하면서 정말 간간이 join 구문을 사용하긴 하지만 매번 사용하진 않은듯 합니다. 하지만 예전에 ASP 시절 그룹웨어 및 ERP등을 프로그래밍 할 경우 JOIN 구문은 기본적으로 어떤 쿼리나 들어있었습다. 어떤 프로그래밍을 하느냐에 따라서 사용여부는 크게 달라지는듯 합니다. 하지만 이거 하나는 확실한것 같습니다. 일단 알아두시면 언젠가 도움은 될겁니다. ^^

 

 

다음 포스팅에서는 UNION 에 대해서 알아보겠습니다

 

그럼 남은 하루 즐겁게 보내시기 바라며, 즐거운 프로그래밍 되길 바랍니다.

 

 

 

 

'SQL' 카테고리의 다른 글

SELECT INTO 구문  (0) 2013.09.05
SQL UNION 구문  (0) 2013.09.04
SQL RIGHT JOIN 구문  (1) 2013.09.03
SQL LEFT JOIN 구문  (0) 2013.09.02
SQL INNER JOIN 구문  (0) 2013.08.31
SQL JOIN 구문  (2) 2013.08.29
Posted by 진격의 파파

댓글을 달아 주세요

  1. 부천사람 2016.01.08 11:31  댓글주소  수정/삭제  댓글쓰기

    JOIN 그림이 잘못됐네요.

SQL LEFT JOIN 구문

SQL 2013.09.02 14:12

 

안녕하세요!! 

이번 포스팅에서는 SQL 에서 LEFT JOIN 구문에 대해서 설명드리겠습니다.

 

INNER JOIN 구문이 교집합 구문이었다면 LEFT JOIN은 LEFT 를 포함한 교집합 구문이라 생각하시면 되겠습니다.

 

 

이미지출처 : w3schools

 

위 그림에서 보면 table1 과 table2에 대해서 left join 을 한 모습인데 자세히 살펴보면 table1의 내용은 그대로 있고 table2와 겹치는 부분의 내용을 추출하는것을 볼 수 있습니다. 그리고 table1의 내용과 일치되지 않는 구문은 null 값을 반환하게 됩니다.

 

left join 의 기본구문

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

// inner join 의 형태와 사용법은 같습니다. 단지 틀려진건 inner -> left 로 바뀐것 입니다.

 

실제로 예제 테이블을 이용하여 값을 가져와 보겠습니다.

 p_num

 name

 age

 mobile

 1

 송기종

 42

 010-1111-1111

 2

 신석호

 41

 010-2222-2222

 3

 이현주

 35

 010-3333-3333

// 테이블 이름을 임시로 INFO 라고 정의하겠습니다.

 

 order_id

 p_num

 employ_date

 caree_year

 1001

 2

 2003-02-02

 5

 1002

 3

 2004-02-17

 6

// 위 테이블 이름은 임시로 ORDER 라고 정의하겠습니다.

 

위 두개의 테이블을 LEFT JOIN 하면

select * from info

left join order

on info.p_num = order.p_num;

 

또는

 

select * from info A

left join order B

on A.p_num = B.p_num;

 

위 두 구문은 같은 형식이며, 아래 구문은 as 의 구문이 생략된 형태입니다. info의 테이블 이름을 A라는 별칭으로 사용했고 order 의 테이블 이름을 B라는 별칭으로 사용했습니다.

 

그리고 중복되는 같은 두 개 이지만 총 레코드는 info의 레코드 개수 만큼 3개가 나오게 됩니다. 그리고 겹치지 않는 order 테이블의 레코드값은 NULL을 가져오게 됩니다.

 p_num

 name

 age

 mobile

 order_id

 p_num 

 employ_date

 caree_year

 1

 송기종

 42

 010-1111-1111

 NULL

 NULL

 NULL

 NULL

 2

 신석호

 41

 010-2222-2222

 1001

 2

 2003-02-02

 5

 3

 이현주

 35

 010-3333-3333

 1002

 3

 2004-02-17

 6

// 위 처럼 값이 출력됩니다.

 

지금까지 LEFT JOIN에 대해서 설명드렸습니다. 사실 예전에 ERP 관련 프로그램을 만들때는 join 구문을 참 많이 사용했었던 기억이 납니다. 그런데 PHP로 넘어오면서 홈페이지 작업을 위주로 일을 하다보니 조인 구문을 그렇게 많이 사용하진 않았습니다. 하지만 살다보면 꼭 이거다라는 정의를 내릴 수 없듯이 JOIN 구문을 알아두시면 언젠가 필요한 날이 오지 않을까 합니다 ㅎㅎ;;

 

그럼 다음 포스팅에서 RIGHT JOIN 구문으로 찾아뵙겠습니다. 남은 오늘 하루일정 잘 마무리 하시고 즐거운 시간 보내길 바라며 즐거운 프로그래밍 되길 바랍니다. ~

 

'SQL' 카테고리의 다른 글

SQL UNION 구문  (0) 2013.09.04
SQL RIGHT JOIN 구문  (1) 2013.09.03
SQL LEFT JOIN 구문  (0) 2013.09.02
SQL INNER JOIN 구문  (0) 2013.08.31
SQL JOIN 구문  (2) 2013.08.29
SQL AS(Aliases) 구문  (0) 2013.08.27
Posted by 진격의 파파

댓글을 달아 주세요

SQL INNER JOIN 구문

SQL 2013.08.31 11:54

 

 

안녕하세요! 

이번 포스팅은 SQL INNER JOIN 의 구문에 대해서 알아보겠습니다.

 

INNER JOIN은 테이블간의 교집합이라고 생각하면 쉽게 이해될듯 합니다.

아래 그림을 참조하시기 바랍니다.

이미지 출처 : w3schools

 

이미지에서 볼 수 있듯이 table1 과 table2와 겹친 초록색 부분이 내용으로 나타나게 됩니다.

기본적인 구문

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

 

또는

 

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

// INNER 를 생략한 구문이지만 동일한 구문입니다.

 

실제로 예제 테이블을 이용하여 값을 가져와 보겠습니다.

 p_num

 name

 age

 mobile

 1

 송기정

 42

 010-1111-1111

 2

 신방호

 41

 010-2222-2222

 3

 이현석

 35

 010-3333-3333

// 테이블 이름을 임시로 INFO 라고 정의하겠습니다.

 

 order_id

 p_num

 employ_date

 caree_year

 1001

 2

 2003-02-02

 5

 1002

 3

 2004-02-17

 6

 1003

 6

 2006-05-12

 3

 

// 위 테이블 이름은 임시로 ORDER 라고 정의하겠습니다.

 

두 테이블을 자세히 살펴보면 p_num 이라는 중복된 필드명이 있는것을 확인할 수 있습니다. 이제부터 그 중복된 p_num을 가지고 inner join 을 만들어보겠습니다. 여기까지 설명드려도 눈치가 빠른 분들은 join을 하면 어떤 내용이 나올지 짐작하는 분들도 계실거라 생각합니다.

 

INNER JOIN 구문

select info.name, order.employ_date, order.caree_year

from info

inner join order

on info.p_num = order.p_num

order by info.name;

// 구문을 살펴보면 우선 info 테이블의 name과 order 테이블의 employ_date, caree_year 데이터를 추출하고  inner join 을 한 후 양 테이블의 p_num 이 일치되는 내용을 가져온후 info 테이블의 name 값으로 오름차순(asc 생략) 정렬을 하는 구문입니다.

 

지금까지 2개의 테이블을 사용하여 예제를 만들어가며 설명드렸는데 실무에서는 그보다 더 많은 테이블을 join 하는 경우도 많이 있기 때문에 응용을 많이 해보시기 바랍니다. ^^

 

다음 포스팅에서는 LEFT JOIN 구문에 대해서 알아보겠습니다.

 

자~ 그럼 오늘도 즐거운 하루 보내시길 바라며,

즐거운 프로그래밍 되시기 바랍니다.

'SQL' 카테고리의 다른 글

SQL RIGHT JOIN 구문  (1) 2013.09.03
SQL LEFT JOIN 구문  (0) 2013.09.02
SQL INNER JOIN 구문  (0) 2013.08.31
SQL JOIN 구문  (2) 2013.08.29
SQL AS(Aliases) 구문  (0) 2013.08.27
SQL BETWEEN 구문  (2) 2013.08.23
Posted by 진격의 파파

댓글을 달아 주세요

SQL JOIN 구문

SQL 2013.08.29 11:14

 

 

안녕하세요!

이번 포스팅에서는 SQL의 JOIN 구문에 대해서 설명하겠습니다.

 

SQL 은 기본적으로 여러개의 테이블을 join(조인)할 수 있습니다. join 의 의미는 합친다라는 의미인데 SQL에서는 서로 다른 테이블을 합치서 하나의 결과를 보여주는것을 의미합니다.

 

JOIN의 방법에는 INNER JOIN(이너조인, 내부조인), OUTER JOIN, LEFT JOIN, JOIN 등 여러가지 방법이 있는데 이번 포스팅에서는 일단 JOIN의 기본적인 방법에 대해서 설명하고 다음 포스팅에서 위 여러가지 방법에 대해서 하나씩 세부적으로 설명하겠습니다.

 

예를 들어서 두개 이상의 테이블로부터 데이터를 가져오기 위해서 FROM 뒤에 테이블의 이름을 나열하면 됩니다.

기본구문

1) select * from test1, test2;

2) select * from test1 A, test2 B;

3) select * from test1 as A, test2 as B;

// 위 구문을 줄여서 Cross join(크로스 조인)이라고 합니다.

 

그리고 알아두어야 할것은 만약 test1의 레코드는 5개이며, test2의 레코드가 10개가 있을 경우 5 * 10 즉 50개의 레코드를 보여주게 됩니다. 1, 2, 3 의 방법을 적었는데 모두 같은 의미입니다. 하지만 1번 예제와 2,3번 예제의 사용방법에 대해선 서로 조금씩 다릅니다. 아 참고로 2번과 3번예제는 동일한 구문입니다. 이전 포스팅에서 AS에 대해서 설명했었는데 AS의 내용에 대해선 이전 포스팅을 참조하시기 바라고 2번 예제는 AS 를 생략한 구문입니다. 아래 예제에서 어떻게 사용방법이 다른지 살펴보겠습니다.

 

1) select test1.title, test2.comment from test1, test2 where test1.id = test2.id

2) select A.title, B.comment from test1 as A, test2 as B where A.id = B.id

// 두 구문은 물론 동일한 결과값을 보여줍니다. 하지만 1번 예제와 2번 예제를 자세히 보면 테이블의 이름을 그대로 써서 조인을 했는가와 테이블 이름을 as 를 사용해 다른 별칭값을 만들어 조인한것이 다른것을 알 수 있습니다. 아무래도 SQL 구문을 짜는 일도 일일이 키보드를 두드려 가며 하는 일이기 때문에 소스를 조금이라도 줄여서 같은 결과값을 빨리 나타내는것이 중요하겠죠.

그래야 퇴근도 빨라지니까요 ㅎㅎ;;

 

우선 JOIN 문에 대해서 알아두시고 다음 포스팅에서 테이블을 사용하여 JOIN 구문을 만들어 결과값이 어떻게 보여지는지에 대해서 알아보겠습니다.

 

비가오니 기온이 뚝 떨어지네요. 아무쪼록 감기 조심하시고  그럼 오늘 하루도 즐거운 하루!! 즐거운 프로그래밍 되시기 바랍니다. ^^

 

'SQL' 카테고리의 다른 글

SQL LEFT JOIN 구문  (0) 2013.09.02
SQL INNER JOIN 구문  (0) 2013.08.31
SQL JOIN 구문  (2) 2013.08.29
SQL AS(Aliases) 구문  (0) 2013.08.27
SQL BETWEEN 구문  (2) 2013.08.23
SQL IN 구문  (10) 2013.08.22
Posted by 진격의 파파

댓글을 달아 주세요

  1. +요롱이+ 2013.08.30 11:51 신고  댓글주소  수정/삭제  댓글쓰기

    잘 보고 갑니다^^
    아무쪼록 기분좋은 오후가 되시기를 바래요!