mysql

[스크랩] ▣ JOIN 과 자료마을 쿼리서류 `합침`

네모세모네모 2012. 5. 9. 17:53

sql 에서 일반적으로 어려워 하는 부분이 JOIN 입니다.

그래서 EMS 같은 도구에서는 Query Builder 를 제공하여 쉽게 sql 문장을 만들도록

도와주고 있습니다.

그런데 JOIN 의 개념은 인터넷에서 찾아보면 그 설명이 많이 나오고 있습니다.

그래서 JOIN 에 대한 설명은 생략하고..

자료마을 사용자들을 위하여 이 JOIN 이 자료마을에서는 어떻게 구현되고 있는지

설명드리고자 하는 것입니다.

 

자료마을 서류중에 '쿼리' 서류가 있습니다.

이 서류는 테이블을 가지고 통계등의 기능을 아주 쉽게 구현토록 도와주고 있으며

여러 테이블을 상하방향으로 이어붙이는 '결합' 기능과

좌우방향으로 붙이는 '합침' 이라는 기능이 있습니다.

여기에서 '합침' 이 바로 sql 에서 이야기 하는 JOIN 을 구현해 놓은 것입니다.

테이블(바탕서류)을 지정하고 '합침' 기능을 눌러 다음과 같은 화면을 보게 됩니다.

 

 

1.  양쪽 테이블에서 같은 내용을 가진 것끼로 좌우방향으로 이어붙이는 결과를 산출합니다.

    아래 옵션을 하나도 체크하지 않은 이 상태는 sql 에서 이야기 하는 INNER JOIN 입니다.

    양쪽 테이블에 주민번호를 공통으로 가진 레코드만 좌우로 붙여서 보여주게 됩니다.

 

 

2.  좌측에 있는 옵션하나를 체크한 경우입니다.

     이것은 SQL 에서 이야기 하는 LEFT OUTER JOIN 입니다.

     좌측테이블에는 있지만 우측테이블에 없는 레코드도 포함시키라는 것입니다.

 

 

3.  우측에 있는 옵션하나를 체크한 경우입니다.

     이것은 SQL 에서 이야기 하는 RIGHT OUTER JOIN 입니다.

     우측테이블에는 있지만 좌측테이블에 없는 레코드도 포함시키라는 것입니다.

 

 

4.  위 두 경우에 있는 옵션하나씩을 모두 체크한 경우입니다.

     이것은 SQL 에서 이야기 하는 FULL OUTER JOIN 입니다.

     우측테이블에는 있지만 좌측테이블에 없는 레코드도 포함시키고

     좌측테이블에는 있지만 우측테이블에 없는 레코드도 포함시키라는 것입니다.

     즉, 양족 테이블에 모든 레코드가 나오게 됩니다.

 

자료마을도 SQL DATABASE 에서 나온 것이기 때문에 SQL 에서 지원하는 대부분의 기능을

가지고 있습니다.  그런 기능들을 직관적으로, 쉽게 구현할 수 있도록 해 놓은 것이 자료마을 입니다.

 

하나 더 예를 들면, 테이블에서 어느 항목(FIELD)값들중 중복되는 것을 제외한 한가지씩만 보여주는

것을 SQL 에서는 'SELECT DISTINCT (항목명) FROM 테이블명' 으로 명령을 보냅니다.

이것을 자료마을에서는 테이블을 열어놓은 상태에서 '자료- 모으기 - 그룹으로' 를 선택한 후 그 항목명을

입력하고 [확인] 버튼을 누르면 됩니다.

 

그렇다면 쿼리서류 '합침' 중에 모든 옵션을 체크한 다음의 결과는 SQL 의 어떤 명령일까요?

 

이 상태로 실행시 결과는 옵션이 하나도 선택되어 있지 않은 상태의 결과와 정반대의 결과가 나옵니다.

즉, 양쪽 테이블에 공통으로 있는 레코드만 뺀 나머지를 구하게 됩니다.   SQL 에서는??

출처 : SQL with neXPice
글쓴이 : database 원글보기
메모 :