2011년 3월 2일 수요일

JOIN 문

TIP JOIN 문
 
JOIN문이란..?
 - 테이블과 테이블을 연결하기 위한 방법
 - 10개든 20개든 갯수에 상관없이 연결이 가능
 - Outer Join과 Self Join도 있다.
 - Inner Join

 -- 형식 ----------
 SELECT 컬럼명.. FROM 테이블1, 테이블2 WHERE 테이블1.컬럼 = 테이블2.컬럼;
 또는..
 SELECT 컬럼명.. FROM 테이블1 INNER JOIN 테이블2 ON 테이블1.컬럼 = 테이블2.컬럼;

예) select a, b, c, d from MAX, BLOG where MAX.b = BLOG.b
      또는...
      SELECT a,b,c,d FROM MAX INNER JOIN BLOG ON MAX.b = BLOG.b;
 - MAX테이블의 b컬럼과 BLOG테이블의 b컬럼중 같은 것만 select(선택) 보여준다.

-- 다중 join ----------
 SELECT 컬럼명.. FROM 테이블1, 테이블2, 테이블3..
     WHERE 테이블1.컬럼 = 테이블2.컬럼 AND 테이블1.컬... ;

 예) select a,b,c,d from MAX,BLOG,NATE..
       where MAX.c = BLOG.c AND MAX.c = NATE.c .... ;
 - MAX.c컬럼과 BLOG.c컬럼이 같고 MAX.c컬럼과 NATE.c컬럼이 같고... 만 선택 보여준다.

-- 종합 예제 -----------
       MAX 테이블                                BLOG 테이블                           NATE테이블
     a    b    c    d                              e    f    g    h                         i     j     k     l
------------------                        ------------------                -----------------
     1   10   100  가                             4    22  107  가                        3   28   87    루
     3   81   103  사                             2    27  127  아                        1   75   81    사
     2   52   123  마                             1    23  187  차                        4   26   54    라
     6   77   132                               0    55  193  라                        8   48   102   가
     7   32   187  나                             5    32  212  하                        6   62   187   마

   
             MAX 테이블                               BLOG 테이블                           NATE 테이블
위와 같이 테이블이 구성 되어 있다.
예) 1번
select a,d,e,h from MAX, BLOG where MAX.b = BLOG.f;
또는..
select a,d,e,h from MAX INNER JOIN BLOG ON MAX.b = BLOG.f;

 - 결과 값은?   MAX의 b컬럼과 BLOG의 b컬럼이 같은것을 찾는 것인데... 보면.. 32라는 값이 있다.

    a    d    e   h       이렇게 나올거다..    
--------------------       
    7    나   5   하       

 역시 잘 맞아 떨어지는구만 -ㅅ-


이번에는.. 
예) 2번
select c, d, g, h, k, l from MAX, BLOG, NATE where MAX.c = BLOG.g ;
또는...
select c, d, g, h, k, l from MAX inner join BLOG on MAX.c = BLOG.g ;

하면.. 


이렇게 NATE 테이블에 관한 조건을 주지 않으니
모두 해당되는 것으로 나온다.



조건을 줘 보자.


예)3번
select c, d, g, h, k, l from MAX, BLOG, NATE where 
      MAX.c = BLOG.g and BLOG.g = NATE.k;   

하나만 나온다.



마지막으로..
예)4번
select c, d, g, h, k, l from MAX, BLOG, NATE where 
      MAX.d= BLOG.h and BLOG.h = NATE.l;   

위와 같은 거당~ 그냥 한번 더 해보는 -ㅅ-;;



 * 단점 ----------
  기본적으로 양쪽 테이블의 컬럼 내용이 있을 경우만 만족한다.
  한쪽이라도 값이 없다면 Join문은 성립되지 않게 된다..
  해서 나온것이 OuterJoin 문이다.

OUTER JOIN ☞  Outer JOIN 이동  고고!!
 

댓글 없음:

댓글 쓰기