두 테이블을 활용해 2022년 10월에 작성된 게시글에 달린 댓글의 제목, 게시글 ID, 댓글 ID, 댓글 작성자 ID, 댓글 내용, 댓글 작성일을 댓글 작성일과 게시글 제목 오름차순으로 조회하는 문제이다.
| 테이블 | 주요 컬럼 |
|---|---|
USED_GOODS_BOARD | BOARD_ID, WRITER_ID, TITLE, CREATED_DATE |
USED_GOODS_REPLY | REPLY_ID, BOARD_ID, WRITER_ID, CONTENTS, CREATED_DATE |
두 테이블 모두 BOARD_ID를 공통으로 갖고 있어서, 이걸 기준으로 연결할 수 있다.
공통 키인 BOARD_ID를 기준으로 JOIN해야 한다. 먼저 흐름을 잡아보았다.
SELECT 게시글 제목, 게시글 ID, 댓글 ID, 댓글 작성자 ID, 댓글 내용, 댓글 작성일
FROM USED_GOODS_BOARD B
JOIN USED_GOODS_REPLY R ON B.BOARD_ID = R.BOARD_ID
WHERE B.CREATED_DATE LIKE '2022-10%'
ORDER BY 게시글 제목, 댓글 작성일
첫 번째, 댓글 작성일을 YYYY-MM-DD 형식으로 출력해야 하므로 DATE_FORMAT(R.CREATED_DATE, '%Y-%m-%d')을 사용해야 한다.
ORDER BY는 댓글 작성일(R.CREATED_DATE), 게시글 제목(B.TITLE) 순으로 정렬하면 된다.
구체적으로 정리한 풀이 흐름:
BOARD_ID 기준으로 JOINWHERE B.CREATED_DATE LIKE '2022-10%'로 2022년 10월 게시글 필터DATE_FORMAT()으로 댓글 작성일 형식 지정ORDER BY R.CREATED_DATE, B.TITLE 오름차순 정렬SELECT B.TITLE, B.BOARD_ID, R.REPLY_ID, R.WRITER_ID, R.CONTENTS, DATE_FORMAT(R.CREATED_DATE, '%Y-%m-%d') AS CREATED_DATE
FROM USED_GOODS_BOARD B
JOIN USED_GOODS_REPLY R ON B.BOARD_ID = R.BOARD_ID
WHERE B.CREATED_DATE LIKE '2022-10%'
ORDER BY R.CREATED_DATE, B.TITLE