인생 디벨로퍼

이력서 리스트 만들기 쿼리 / 절대 간단하지 않은 join 본문

Project/Mini Project - Rodonin (구인구직)

이력서 리스트 만들기 쿼리 / 절대 간단하지 않은 join

뫄뫙뫄 2023. 3. 7. 12:42
728x90
반응형

개인정보 페이지에서, 이력서 리스트를 만들어주려한다.

  1. employee_id 로 resume 조회한다.
  2. resume 테이블에서, resume_title, resume_salary 를 선택 -> 컬럼
  3. resume_id 를 이용하여, 각각의 resume_career, resume_graduate, resume_license, resume_stack 테이블을 조인한다.
  4. 각각의 마스터 테이블의 값을 불러온다.

단계별로 계획을 잡고 시작!


https://steponecoding.tistory.com/7

 

개인정보 뿌리기 (select, inner join) / 가장 간단한 inner join

아주 간단한 기능이지만, 테이블 관계 이해가 필수! https://steponecoding.tistory.com/5 개인정보 insert (form) 먼저, 테이블 관계를 정리해야했다.. Controller @PostMapping("/employee/save") public String save(EmployeeGradua

steponecoding.tistory.com

간단한 inner join 쿼리문부터 불러온다. 방식은 위의 글을 참고하자.

resume 테이블에서과, resume_graduate 테이블을 조인.

여기서, school_id 를 이용해, school_name 을 불러와야 한다.

school_name이 나오는 부분을 서브쿼리로 기존 쿼리문에 추가한다.

school_name 컬럼추가!

 

이과정을 반복해서,

나머지 테이블도 조인해줬다.

 

원하는 데이터는 모두 조회 됬지만, 모든 값이 나오는걸 확인, (리스트의 경우, 각 테이블에서 대표 데이터만 받아올 예정.)

group by 를 사용해, resume_id 값 당 하나의 데이터만 받도록 해줬다. 

max() 를 이용하면, 최대값 만을 출력한다.

 


이게 최종 쿼리라고 생각했지만,

inner join을 사용했기에 null 값이 나오지 않는다.

resume 테이블에는 모든 데이터에 null 을 허용하다보니, 

위의 쿼리를 사용했을때, 하나의 데이터가 없다면 모든 값이 나오지 않는 오류 발생. 

(추후 수정, 삭제 등 관리 역활을 고려해, 모든 이력서가 조회 되어야 한다.)

따라서, inner join 을 모두 left outer join 으로 바꿔줬다.

 

기존 쿼리로 employee_id 5번을 조회시, 모든 값이 나오지 않는다.

null 값을 포함한 데이터가 나온다.

 

이제 진짜 최종.

이 쿼리로, 이력서 리스트를 만들어보자!

728x90
반응형