본문 바로가기
CS/SQL

[프로그래머스] 조건에 부합하는 중고거래 댓글 조회하기

by abcodef 2023. 7. 1.

거의 처음으로 SQL 문제를 풀어봤다. JPA를 하면서 쿼리문 작성할 일이 거의 없어서 감이 떨어졌다.

문제에서 요구하는 조건

  1. 2개의 테이블 같이 조회(JOIN 사용)
  2. 조건에 따른 검색(WHERE 사용)
  3. 오름차순 정렬(ORDER BY ASC 사용)
  4. 요청한 형식에 맞춰서 조회(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

댓글