거의 처음으로 SQL 문제를 풀어봤다. JPA를 하면서 쿼리문 작성할 일이 거의 없어서 감이 떨어졌다.
문제에서 요구하는 조건
- 2개의 테이블 같이 조회(JOIN 사용)
- 조건에 따른 검색(WHERE 사용)
- 오름차순 정렬(ORDER BY ASC 사용)
- 요청한 형식에 맞춰서 조회(AS, DATE_FORMAT 사용)
많은 부분을 잊고 있어서 자료를 참고해서 쿼리문을 작성했다.
SELECT B.TITLE AS TITLE, B.BOARD_ID AS BOARD_ID, R.REPLY_ID AS REPLY_ID, R.WRITER_ID AS WRITER_ID, R.CONTENTS AS CONTENTS, DATE_FORMAT(R.CREATED_DATE, '%Y-%m-%d') AS CREATE_DATE
FROM USED_GOODS_BOARD AS B JOIN USED_GOODS_REPLY AS R ON B.BOARD_ID = R.BOARD_ID
WHERE B.CREATED_DATE >= '2022-10-01' And B.CREATED_DATE < '2022-11-01' ORDER BY R.CREATED_DATE ASC, B.TITLE ASC
분석
SELECT B.TITLE AS TITLE, B.BOARD_ID AS BOARD_ID, R.REPLY_ID AS REPLY_ID, R.WRITER_ID AS WRITER_ID, R.CONTENTS AS CONTENTS, DATE_FORMAT(R.CREATED_DATE, '%Y-%m-%d') AS CREATE_DATE
- 문제에서 요구한 조건처럼 출력하기 위해 AS(ALIAS)를 사용
- DATE_FORMAT을 사용해 날짜 조건도 맞췄다. 사용하지 않으면 시간까지 나옴
- %y를 사용하면 22, %Y를 사용하면 2022이 출력
FROM USED_GOODS_BOARD AS B JOIN USED_GOODS_REPLY AS R ON B.BOARD_ID = R.BOARD_ID
- 테이블을 구분하기 위해 AS(ALIAS)를 사용
- 2개의 테이블을 결합하기 위해 JOIN 사용
- MySQL에서의 기본 JOIN은 INNER JOIN
- BOARD_ID가 동일하므로 BOARD_ID 기준으로 JOIN 진행
WHERE B.CREATED_DATE >= '2022-10-01' And B.CREATED_DATE < '2022-11-01'
- 2022년 10월에 작성된 게시물을 검색하기 위해 WHERE을 사용해 기간을 설정
ORDER BY R.CREATED_DATE ASC, B.TITLE ASC
- 댓글 작성일을 기준 오름차순 정렬이 우선이므로 먼저 작성
- 오름차순 정렬은 ASC, 내림차순 정렬은 DESC
- 기본은 ASC
'CS > SQL' 카테고리의 다른 글
[프로그래머스] 조건에 맞는 도서 리스트 출력하기 (0) | 2023.07.14 |
---|---|
[프로그래머스] 3월에 태어난 여성 회원 목록 출력하기 (0) | 2023.07.05 |
[프로그래머스] 흉부외과 또는 일반외과 의사 목록 출력하기 (0) | 2023.07.04 |
[프로그래머스] 강원도에 위치한 생산공장 목록 출력하기 (0) | 2023.07.03 |
dbdiagram.io 사용 (1) | 2021.11.03 |
댓글