[MSSQL - Inner Join 의 사용]
Inner Join은 우리가 일반적으로 알고 있는 조인이며 결합 조건에 만족하는 데이타를 추출합니다.
1) 두개의 테이블을 조인하기
사용법) FROM 절뒤에 조인하고자 하는 테이블들이 오고 테이블 사이에 INNER JOIN 문이 삽입됩니다. 그 뒤에 ON 이 오고 조인하고자 하는 조건을 적어줍니다.
예) SELECT * FROM Marketer_Tbl INNER JOIN DeptCode_Tbl ON Marketer_Tbl.dCode = DeptCode_Tbl.dCode | |
위에 문장은 Marketer_tbl과 DeptCode_Tbl 에서 dCode 가 같은 모든 데이타를 추출합니다.
별칭의 사용) 테이블명은 별칭으로 대체할수 있습니다.
예) SELECT * FROM Marketer_Tbl a INNER JOIN DeptCode_Tbl b ON a.dCode = b.dCode | |
위에 문장은 Marketer_tbl을 a 라는 별칭으로 DeptCode_Tbl 을 b 라는 별칭으로 사용했습니다. 결과값은 Marketer_tbl과 DeptCode_Tbl 에서 dCode 가 같은 모든 데이타를 추출합니다.
한쪽의 결과값만 보기) 보고자 하는 테이블 쪽에 "테이블.* "을 사용합니다.
예) SELECT Marketer_tbl.* FROM Marketer_Tbl INNER JOIN DeptCode_Tbl ON Marketer_Tbl.dCode = DeptCode_Tbl.dCode | |
위에 문장은 조건에 맞는 Marketer_tbl의 데이타만 보여줍니다.
예) SELECT a.* FROM Marketer_Tbl a INNER JOIN DeptCode_Tbl b ON a.dCode = b.dCode | |
위에 문장도 별칭을 사용했을 뿐 Marketer_tbl의 데이타만 보여줍니다.
2) 다수의 테이블을 조인하기
사용법) 세개 이상의 테이블을 조인하기 위해서는 두개의 테이블이 먼저 조인되고, 그 결과값을 하나의 테이블로 간주하여다시 조인을 거는것으로 생각하면 쉽습니다. 테이블의 갯수가 늘어날 때 마다 계속 조인의 반복입니다.
예) SELECT * FROM Receipt_tbl a INNER JOIN Rgubun_tbl b ON a.rNo = b.rNo INNER JOIN Marketer_Receipt_tbl c ON b.rNo = c.rNo | |
위의 문장에서는 세개의 테이블 Receipt_tbl, Rgubun_tbl, Marketer_tbl 이 조인에 참여합니다. Receipt_tbl 과 Rgubun_tbl 에서 rNo 가 같은 데이타를 추출하여 Marketer_Receipt_tbl 과 rNo 가 같은 데이타를 최종적으로 추출합니다.
예) SELECT * FROM Receipt_tbl a INNER JOIN Rgubun_tbl b ON a.rNo = b.rNo INNER JOIN Marketer_Receipt_tbl c ON b.rNo = c.rNo INNER JOIN Company_tbl d ON a.cCode = d.cCode | |
위의 문장에서는 네개의 테이블이 조인에 참여하는 것을 보여주고 있습니다. Receipt_tbl, Rgubun_tbl, Marketer_Receipt_tbl 의 rNo 가 같은 데이타를 추출한 결과값 중 Company_tbl 의 cCode 와 같은 데이타를 최종적으로 추출합니다.
※ 다수 테이블의 조인에서는 선행되는 조인의 결과와 그 다음의 테이블이 차례로 조인되는 것으로 생각하면 쉽습니다. 아래의 예를 참고하시기 바랍니다.
( ( ( ( A + B ) + C ) + D ) + ... N ) | |
※ 예제를 간편하게 작성하기 위해서 와일드카드 문자 * 를 사용하여 모든 컬럼을 가져오게 했으나 일반적으로 컬럼을 가져올때는 꼭 필요한 컬럼만 가져오도록 하는 것이 쿼리성능에 좋습니다.
작성자: 다자래(mfcchang@naver.com) 웹제작 토탈 커뮤니티 http://www.webmadang.net | | |