[프로그래머스, SQL] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기

takeon·2024년 1월 1일
0

SQL

목록 보기
3/11
post-thumbnail

난이도: Lv. 3
https://school.programmers.co.kr/learn/courses/30/lessons/164671

💭문제 설정

USED_GOODS_BOARD 테이블: 중고거래 게시판 정보

  • Column: BOARD_ID, WRITER_ID, TITLE, CONTENTS, PRICE, CREATED_DATE, STATUS, VIEWS

USED_GOODS_FILE 테이블: 중고거래 게시판 첨부파일 정보

  • Column: FILE_ID, FILE_EXT, FILE_NAME, BOARD_ID

💭문제

위의 두 테이블에서 조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회하는 SQL문을 작성. 기본 파일 경로는 /home/grep/src/이고 이후는 게시글 ID, 파일 ID와 파일 이름, 확장자 순으로 구성된다. 최종 결과는 FILE ID 순으로 내림차 정렬. 조회수가 가장 높은 게시물은 하나만 존재한다.

예시 파일 경로) 게시글 ID가 B0005이고 파일 ID는 IMG_01, 파일 이름은 사진, 확장자는 png일 때 파일 경로는 /home/grep/src/B0005/IMG_01사진.png이다.

💭문제 풀이

조회수가 가장 높은 게시물은 하나만 존재하지만, 그에 따른 첨부파일은 하나가 아닐 수 있다. 일단 where문에서 조회수가 가장 높다는 조건을 걸어주고, select에서 concat을 사용해 파일 경로를 출력한다. 물론 join on을 사용해서 두 테이블을 함께 사용해야 한다.

SELECT concat('/home/grep/src/', B.BOARD_ID, '/', FILE_ID, FILENAME, FILE_EXT) AS FILE_PATH
FROM USED_GOODS_BOARD B
JOIN USED_GOODS_FILE F
ON B.BOARD_ID = F>BOARD_ID
WHERE VIEWS = (SELECT MAX(VIEWS) FROM USED_GOODS_BOARD)
ORDER BY 1 DESC

💭기억할 부분

  1. concat의 사용
  2. where문에서의 nested query
  3. join on

0개의 댓글