본문 바로가기
문제풀이/SQL(My sql)

[문제풀이] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기

by kime2 2024. 1. 29.
출처

 

문제

USED_GOODS_BOARD와 USED_GOODS_FILE 테이블에서 조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회하는 SQL문을 작성해주세요. 첨부파일 경로는 FILE ID를 기준으로 내림차순 정렬해주세요. 기본적인 파일경로는 /home/grep/src/ 이며, 게시글 ID를 기준으로 디렉토리가 구분되고, 파일이름은 파일 ID, 파일 이름, 파일 확장자로 구성되도록 출력해주세요. 조회수가 가장 높은 게시물은 하나만 존재합니다.

 

문제에 대한 해석

-- 출력: 첨부파일 경로(/home/grep/src/게시글 ID/파일 ID/ 파일 이름 파일 확장자)
-- 정렬: FILE ID를 기준으로 내림차순 

풀이(MYSQL)

select concat('/home/grep/src/',b.board_id,'/',f.file_id,f.file_name,f.file_ext)
from used_goods_board b join used_goods_file f
on b.board_id = f.board_id
where b.views = (select max(views)
              from used_goods_board )
order by f.file_id desc

 

작동순서

💡SQL 실행 순서는 From -> Where -> Group by -> Having -> Select -> Order by ->결과반환

  1. FROM 절: used_goods_board테이블과 used_goods_file 테이블을 board_id를 기준으로 inner join
  2. WHERE 절: views 가  used_goods_board 테이블에서 가장 높은 views와 동일한 경우 필터링*
  3. SELECT 절: concat을 통해 '/home/grep/src/' + b.board_id+ '/' + f.file_id + '/' + f.file_name + f.file_ext을 합쳐서 조회 **
  4. ORDER BY 절: file_id의 내림차순

* 가장 높은 조회수의 게시글 1개만 조회해야 하기 때문에 where절에서 서브쿼리를 통해 가장높은 조회수와 동일한 조건을 지정하여 필터링 한다

**  '  ' 따옴표 안에는 텍스트 

조회수가 가장 높은 게시글
(조회수가 가장 높은 게시글) B0008의 첨부파일