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

민정·2023년 7월 10일
0

코딩테스트

목록 보기
3/5

[SQL/Programmers]

문제:
USED_GOODS_BOARD와 USED_GOODS_REPLY 테이블에서 2022년 10월에 작성된 게시글 제목, 게시글 ID, 댓글 ID, 댓글 작성자 ID, 댓글 내용, 댓글 작성일을 조회하는 SQL문을 작성해주세요. 결과는 댓글 작성일을 기준으로 오름차순 정렬해주시고, 댓글 작성일이 같다면 게시글 제목을 기준으로 오름차순 정렬해주세요.

USED_GOODS_BOARD 테이블

USED_GOODS_REPLY 테이블

✅ 확인해야할 조건

  1. USED_GOODS_BOARD 와 USED_GOODS_REPLY 테이블에서 게시글 제목,게시글 ID, 댓글 ID, 댓글 작성자 ID, 댓글 내용, 댓글 작성일 컬럼을 가져와야 한다.
  2. 게시글 작성 날짜가 2022년 10월이어야 한다.
  3. 댓글 작성일을 기준으로 오름차순, 작성일이 같다면 게시글 제목을 기준으로 오름차순 정렬을 해야 한다.
  4. 날짜 형식은 '년-월-일'이어야 한다.

코드

-- 코드를 입력하세요
SELECT board.TITLE,board.BOARD_ID,reply.REPLY_ID,reply.WRITER_ID,reply.CONTENTS, DATE_FORMAT(reply.CREATED_DATE,'%Y-%m-%d' ) as CREATED_DATE
FROM USED_GOODS_BOARD as board
    INNER JOIN USED_GOODS_REPLY as reply
    ON board.BOARD_ID = reply.BOARD_ID
WHERE board.CREATED_DATE >='2022-10-01' and board.CREATED_DATE < '2022-11-01'
ORDER BY reply.CREATED_DATE ASC, board.TITLE ASC;

출력 결과

해결 방법

  1. 먼저 두 개의 테이블에 존재하는 공통 컬럼 BOARD_ID 를 기준으로 JOIN 해 주었다.
  2. 그 다음에 해당하는 컬럼을 가져오고 , 게시글을 작성한 날짜가 10월에 해당하는 데이터만 추출
  3. 추출 후 댓글 작성일을 기준으로 오름차순, 댓글 작성을이 같다면 게시글 제목을 기준으로 오름차순 해주었다

기록


1. 테이블 조인

  • 조인은 크게 Inner join, Outer join 으로 나뉜다.
    INNER JOIN
    Inner join 은 테이블 내부의 교집합을 중심으로 결합하는 것, 공통 컬럼이 존재할 때 이를 결합 조건으로 하여 조인 가능 !
SELECT board.CREATE_DATE reply.contents
	FROM USED_GOODS_BOARD as board
    INNER JOIN USED_GOODS_REPLY as reply
    ON board.BOARD_ID = reply.BOARD_ID //결합 조건 

결합을 할 때 조건은 ON 이하에 명시해주면 된다.

2. 날짜 비교

연산자로 날짜를 비교하여 날짜 조건에 해당하는 데이터만 추출할 수 있다.

  • ⬜️ 조건문에 BETWEEN 을 사용해 날짜 범위를 지정해 검색할 수 있는 방법도 있다.
    WHERE board.CREATED_DATE BETWEEN '2022-10-01' AND '2022-10-31'
    이 형식으로 작성하면 지정한 범위에 포함되는 데이터는 모두 출력된다!
profile
공부 기록장

0개의 댓글