기본 콘텐츠로 건너뛰기

라벨이 join인 게시물 표시

SQL 결합 - JOIN, WITH, SUB QUERY

1. 2개 이상의 테이블의 column을 결합하는 방법은 여러가지가 있다. 기본적으로는 JOIN을 사용하지만, 복잡하게 결합해야 할 때에는 SUB QUERY(서브쿼리)와 WITH을 사용할 수 있다. 2. 아래와 같이 sales와 users의 샘플 테이블을 만들어 보자 1 2 3 4 5 6 7 8 9 10 11 12 13 CREATE TABLE sales_online(id integer, sales integer); INSERT INTO sales_online VALUES ( 1 , 100 ); INSERT INTO sales_online VALUES ( 2 , 170 ); INSERT INTO sales_online VALUES ( 3 , 250 ); CREATE TABLE users(id integer, last_name text); INSERT INTO users VALUES ( 1 , 'kim' ); INSERT INTO users VALUES ( 2 , 'lee' ); INSERT INTO users VALUES ( 3 , 'park' ); INSERT INTO users VALUES ( 4 , 'choi' ); INSERT INTO users VALUES ( 5 , 'han' ); 3. JOIN을 사용하여 결합해보자. JOIN의 기본이 되는 INNER JOIN을 사용해보자 1 2 3 4 5 SELECT s.id, u.last_name FROM sales_online s JOIN users u ON s.id = u.id ; 아래와 같이 잘 결합되었다. 4. SUB QUERY를 사용하여 결합해보자 1 2 3 4 5 SELECT s.id, u.last_name FROM sales_onlin

SQL UNION, UNION ALL - 행 결합

1. 다른 테이블을 결합해야 할 때가 있다. 특정 조건을 기준으로 column(열)을 결합시킬 때는 JOIN을 사용한다. 하지만 row(행)을 결합시킬 때는 UNION 또는 UNION ALL을 사용하면 된다. 두 개의 SELECT문을 합치는 것이라 생각하면 된다. 2. UNION과 UNION ALL은 차이가 있다. UNION은 중복되는 row를 제거하고 결합 시키지만, UNION ALL은 중복도 포함하여 결합시킨다. 3. UNION과 UNION ALL을 사용할 때의 주의점은 아래와 같다. - SELECT문의 column 수가 같아야 한다. - column의 자료형이 같거나 호환되어야 한다. - column 이름은 최상위 SQL문의 이름을 따른다. - column 이름이 아니라 column 순서를 기준으로 결합된다. 이름이 같아도 순서가 다르면 다른 순서대로 결합된다. 4. 예제를 통해 살펴보자 아래와 같이 온라인, 오프라인 세일즈를 기록하는 테이블이 각각 있다고 하자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 CREATE TABLE sales_online(id integer, sales integer); INSERT INTO sales_online VALUES ( 1 , 100 ); INSERT INTO sales_online VALUES ( 2 , 170 ); INSERT INTO sales_online VALUES ( 3 , 250 ); INSERT INTO sales_online VALUES ( 4 , 300 ); INSERT INTO sales_online VALUES ( 5 , 120 ); CREATE TABLE sales_offline(id integer, sales integer); INSERT INTO sales_offline VALUES ( 1 , 185 ); INSERT INTO sales_o

SQL USING - 동일한 column name을 가지는 결합조건

두 개의 테이블을 결합할 때 JOIN(조인)을 사용한다. JOIN을 할 때 두 테이블의 결합 조건은 보통 ON을 사용한다. table_A에 colname_1, colname_2의 2개의 열이 있고, table_B에는 colname_1, colname_2의 2개의 열이 있다. 두 테이블을 colname_1의 값이 일치하는 조건으로 결합해야한다고 하자. 보통 아래와 같이 "JOIN ON" 구문으로 조인을 하게 된다. 1 2 3 4 5 SELECT  a.colname_1, a.colname_2, b.colname_3 FROM  table_A a INNER JOIN table_B b ON  a.colname_1  =  b.colname_1 ; Colored by Color Scripter cs 그런데 두 테이블 모두에 colname_1이 똑같은 이름으로 있다. 이 때 USING() 구문을 사용해서 더 편리하게 조인할 수 있다. 1 2 3 4 5 SELECT  a.colname_1, a.colname_2, b.colname_3 FROM  table_A a INNER JOIN table_B b USING (colname_1) ; Colored by Color Scripter cs 상기 2개의 쿼리는 결합 조건을 나타낸다. USING() 구문을 사용해서 더 간결한 쿼리를 작성할 수 있다. USING()은 두 테이블에 같은 이름으로 존재하는 칼럼을 연결하는 결합조건을 실행할 때 사용할 수 있다. 단, MS SQL과 SYBASE에서는 지원하지 않는다. 끝.