본문 바로가기
[업무 지식]/MySQL

[조건 서브쿼리] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기

by 에디터 윤슬 2024. 10. 13.

목차

    링크

    https://school.programmers.co.kr/learn/courses/30/lessons/164671

     

    프로그래머스

    코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

    programmers.co.kr

     

    문제

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

    정답 1

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

     

    정답 2

    with maxveiws as (
        select board_id
        from used_goods_board
        where views in (select max(views) from used_goods_board)
    )
    select concat('/home/grep/src', '/', fi.board_id, '/', file_id, file_name, file_ext) as file_path
    from used_goods_file fi
    join maxveiws m
    on m.board_id = fi.board_id
    order by file_id desc;

    해설

    • 파일명 이어 붙이기는 concat 사용
    • 조회수가 가장 높은 게시물을 찾는 '자동화'를 위해(매번 변경되고, 매번 수정할 수 없어) select로 서브 쿼리 사용
    • 서브쿼리의 조건화

    새롭게 이해한 내용

    서브쿼리를 활용하여 조건으로 지정할 수 있다.