본문 바로가기

코딩테스트/SQL - 프로그래머스

SQL 고득점 kit(String, Date) - 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기

 

프로그래머스 문제

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

 

풀이

https://school.programmers.co.kr/questions/74836

 

 

 

-- 풀이 쿼리

-- 파일경로 : /home/grep/src/BOARD_ID
-- 파일 이름 : 파일ID, 파일이름, 파일확장자로 구성됨
-- 조회수가 가장 높은 게시물은 유일함.

SELECT CONCAT('/home/grep/src/', BOARD_ID, '/', FILE_ID, FILE_NAME, FILE_EXT) AS FILE_PATH
    FROM USED_GOODS_FILE
    WHERE BOARD_ID = (
        SELECT BOARD_ID 
            FROM USED_GOODS_BOARD 
            ORDER BY VIEWS DESC
            LIMIT 1
        )
    ORDER BY FILE_ID DESC

 

 

 - 주의사항

  =>  조회수가 가장 높은 게시물은 유일하지만, 게시물에 첨부된 파일은 유일하지 않다.

  =>  그러므로 BOARD_ID를 찾는 쿼리를 메인 쿼리에 두면 안 된다. LIMIT 1이라는 조건이 걸려 있으므로 해당 게시물의 모든 파일을 다 가져오지 못할 수 있기 때문.

 

위의 주의사항만 잘 고려하면 어려운 문제는 아니다. JOIN을 써도 되고, 안 쓰고 위의 쿼리처럼 풀어도 된다.