CS/SQL
[프로그래머스] 조건에 부합하는 중고거래 댓글 조회하기
abcodef
2023. 7. 1. 12:34
거의 처음으로 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