안녕하세요!
오늘은 조인(join)에 대해서 잠깐 이야기를 해야 할 것 같습니다/ 보통 정규화를 거친 테이블들은 컬럼들이 여러개의 테이블로 나누어져 있는 경우가 대부분입니다. 우리는 같은 특성을 가진 테이블을 가공을 해서 출력을 시켜야 할 때가 종종 있습니다. 뭐, 하나의 테이블을 사용한다면 문제가 없겠지만,,,, 여러개로 나누어져 있는 경우에는 JOIN 이란 쿼리를 모를땐 여러번 쿼리를 반복 적으로 사용할수밖에 없을겁니다. 여기서 우리는 테스트할 테이블을 하나 만들어 보고 같이 이야기를 나누어 보고자 합니다. 아래와 같은 테이블이 있다고 가장해 봅니다.
위와 같이 member 테이블(mem)과 그와 연관이 되는 info 란 테이블이 있다고 가정했을 때,,, 여기에서 우리는 회원번호, 이름,아이디, 전화, 이메일이란 테이블에서 정보를 뽑아오고 싶다면 어떻게 해야 할까요? 이럴 때 유용하게 사용하는 되는 쿼리가 바로 JOIN 이랍니다. 아래처럼 사용하면 되죠... Select mem.no , mem.name , mem.id , info.tel , info.Email from mem, info where mem.no=info.no 위와 같이 쿼리를 사용해서 처리를 해 줄 수 있습니다. 즉 mem 테이블의 no와 info 테이블의 no는 같은 정보를 가지고 있는 인덱스 값입니다.... 이 두 값이 일치하는 값들을 모두 추출하고, 출력하고 싶은 필드의 이름을 적어 주시면 된답니다. from 다음의 테이블의 이름은 mem,info 와 같이 컴마를 구분으로 적어 주시면 된답니다. 그럼, 이번에는 다음과 같은 테이블이 있다고 가정을 해 봅니다. 테이블명 : A
테이블명: B
다음과 같은 정보를 가지고 있는 테이블이 있습니다..... 먼저 테이블을 보면 A 테이블의 no는 일련번호이며, idx는 B테이블의 no값의 인덱스랍니다. 그리구, member_no는 각기 회원의 번호이지요.... 보통 저같은 경우는 클럽기능을 만들 때 주로 사용했던 로직인데요... 위의 테이블에서는 1번 회원이 등록한 클럽이 3개가 있답니다. idx 값은 이 클럽의 번호들이 되겠네요.. 그쵸? 그렇다면,,, 내가 로그인을 했을 때,,, 이 회원번호만을 가지고 있습니다. 이때,,, 조인을 사용해서 회원 1번이 가입한 클럽의 이름을 출력하고 싶습니다. 어떻게 하면 될까요..... A테이블의 member_no 값을 가지고 b테이블의 title을 출력하고 싶은 겁니다.. 이때도 마찬가지고 쿼리를 사용하면 된답니다...... 조건만 하나를 더 붙이면 되겠네요... 아래처럼요.. select A.idx , B.title from A,B where (A.idx=B.no) and (member_no=1) A테이블의 idx와 B테이블의 NO가 같은 값만을 출력합니다... 단 member_no 필드의 값이 1인 것중에서요... 만약 여기에서 and (member_no=1) 이 명령을 빼놓고 쿼리를 한다면,,,, A테이블의 모든 결과가 화면에 출력이 되겠죠? 그래도 간단히 집고 넘어가야 할 것 같아서 짬을 내서 적어 보았습니다. 항상 건강하세요....
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||