일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- js
- react
- 구글캘린더api
- CSS
- springboot
- 구글 oauth
- 리액트초기세팅
- 자바스크립트기초문법
- 처음만나는자바스크립트
- 마이바티스
- 전자정부 서버세팅
- 자바스크립트기초
- javaspring
- HTML
- 웹
- 기초 코딩
- 리액트프로젝트세팅
- mybatis
- 스프링부트
- 자바스크립트 기초
- 리액트세팅
- 기초코딩
- spring
- java
- 자바스크립트
- 자바
- Spring Boot
- 코딩
- Javascript
- 웹앱
- Today
- Total
인생 디벨로퍼
이력서 리스트 만들기 쿼리 / 절대 간단하지 않은 join 본문
개인정보 페이지에서, 이력서 리스트를 만들어주려한다.
- employee_id 로 resume 조회한다.
- resume 테이블에서, resume_title, resume_salary 를 선택 -> 컬럼
- resume_id 를 이용하여, 각각의 resume_career, resume_graduate, resume_license, resume_stack 테이블을 조인한다.
- 각각의 마스터 테이블의 값을 불러온다.
단계별로 계획을 잡고 시작!
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 값을 포함한 데이터가 나온다.
이제 진짜 최종.
이 쿼리로, 이력서 리스트를 만들어보자!
'Project > Mini Project - Rodonin (구인구직)' 카테고리의 다른 글
이력서 상세보기 / 네버엔딩 select (0) | 2023.03.08 |
---|---|
이력서 리스트 만들기 (select, ajax 를 이용한 delete) (0) | 2023.03.08 |
개인정보 뿌리기 (select, inner join) / 가장 간단한 inner join (0) | 2023.03.06 |
개인정보 detail 필수값 뿌리기 (select) (0) | 2023.03.06 |
개인정보 insert (form) (0) | 2023.03.06 |