본문 바로가기

개발 지식/DB

[PostgreSQL] 3개 테이블 조인

반응형

개발할때는 역시 막히던 것을 속시원하게 뚫어내고 깨달음을 얻었을 때 가장 기분이 좋은 것 같다. 현직에서 쿼리문을 많이 작성하시는 분들에게는 쉬울 내용이지만 차근차근 배워가는 병아리로서 오늘 얻은 3개 테이블 조인 쿼리문에 대한 깨달음을 정리해본다.

 

테이블1 : company

회사 정보가 있는 테이블. 회사의 id(PK), 회사 이름 컬럼이 있다.

company 테이블

테이블2 : solution

솔루션의 정보가 있는 테이블. 솔루션의 id(PK), 솔루션 이름 컬럼이 있다.

solution 테이블

테이블3 : company_solution

회사별로 어떤 솔루션이 있는지에 대한 테이블. id(PK), company_id(company 테이블의 pk), solution_id(solution 테이블의 pk)가 있다. 외래키 제약조건은 걸어두지 않았다.

company_solution 테이블

 

모든 회사들이 각각 어떤 솔루션을 가지고 있는지 조회

SELECT cs.company_id, cs.solution_id, c.name as company_name, s.name as solution_name
FROM company_solution cs
LEFT OUTER JOIN company c ON cs.company_id = c.id
LEFT OUTER JOIN solution s ON cs.solution_id = s.id

결과값

 

특정 회사의 id를 알고 있고, 그 회사가 어떤 솔루션을 가지고 있는지 조회

SELECT cs.company_id, cs.solution_id, c.name as company_name, s.name as solution_name
FROM company_solution cs
LEFT OUTER JOIN company c ON cs.company_id = c.id and c.id = 5
LEFT OUTER JOIN solution s ON cs.solution_id = s.id
WHERE c.id = 5;

결과값

특히 두번째 쿼리문 작성시에 WHERE 절을 넣어주지 않는다면 company가 null인 정보도 조회가 되기 때문에 3개의 행이 출력된다. 따라서 필요한 정보만 잡으려면 WHERE 절을 필히 작성해주자!

 

반응형