https://school.programmers.co.kr/learn/courses/30/lessons/164673
코딩테스트 연습 > SELECT > 조건에 부합하는 중고거래 댓글 조회하기
문제 분석
문제 조건
USED_GOODS_BOARD와 USED_GOODS_REPLY 테이블에서 2022년 10월에 작성된 게시글 제목, 게시글 ID, 댓글 ID, 댓글 작성자 ID, 댓글 내용, 댓글 작성일을 조회하는 SQL문을 작성해주세요.
결과는 댓글 작성일을 기준으로 오름차순 정렬해주시고, 댓글 작성일이 같다면 게시글 제목을 기준으로 오름차순 정렬해주세요.
조인
2개의 테이블의 데이터가 각각 필요하다. (조인이 필요하다)
댓글에는 테이블 ID가 존재한다(외래키)
그럼 USED_GOODS_BOARD와 USED_GOODS_REPLY INNER JOIN 한다.
ON 조건은 테이블의 PK이자 댓글의 외래키인 테이블 ID를 사용한다.
FROM
USED_GOODS_BOARD AS B JOIN USED_GOODS_REPLY AS R
on B.BOARD_ID = R.BOARD_ID
where 조건
2022년 10월에 작성된 게시글 제목
WHERE B.CREATED_DATE BETWEEN '2022-10-01' AND '2022-10-31'
정렬 기준
댓글 작성일 ASC (Default) 생략 가능
게시글 제목 ASC (Default) 생략 가능
ORDER BY R.CREATED_DATE, B.TITLE
정답 코드1
SELECT
B.TITLE,
B.BOARD_ID,
R.REPLY_ID,
R.WRITER_ID,
R.CONTENTS,
SUBSTRING(R.CREATED_DATE, 1, 10) AS CREATED_DATE
FROM
USED_GOODS_BOARD AS B JOIN USED_GOODS_REPLY AS R
on B.BOARD_ID = R.BOARD_ID
WHERE B.CREATED_DATE BETWEEN '2022-10-01' AND '2022-10-31'
ORDER BY R.CREATED_DATE, B.TITLE
2022-10-01 길이: 10
SUBSTRING 활용해서 원하는 포맷으로 맞추었다.
SUBSTRING(R.CREATED_DATE, 1, 10) AS CREATED_DATE
정답 코드2 (DATE_FORMAT 사용)
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 AS B JOIN USED_GOODS_REPLY AS R
on B.BOARD_ID = R.BOARD_ID
WHERE B.CREATED_DATE BETWEEN '2022-10-01' AND '2022-10-31'
ORDER BY R.CREATED_DATE, B.TITLE
DATE_FORMAT(R.CREATED_DATE, '%Y-%m-%d') AS CREATED_DATE
'Algorithm > Programmers SQL' 카테고리의 다른 글
[MySQL] 프로그래머스 자동차 대여 기록에서 장기/단기 대여 구분하기 (0) | 2024.08.28 |
---|---|
[MySQL] 프로그래머스 특정 옵션이 포함된 자동차 리스트 구하기 (0) | 2024.08.28 |
[MySQL] 프로그래머스 Python 개발자 찾기 (0) | 2024.08.28 |
[MySQL] 프로그래머스 잔챙이 잡은 수 구하기 (0) | 2024.08.28 |
[MySQL] 프로그래머스 잡은 물고기의 평균 길이 구하기 (1) | 2024.08.28 |