
📑 1. 문제설명




💡 2. 접근방식
FILE_PATH 출력 예시를 보고 '/home/grep/src/' + F.BOARD_ID + '/' + F.FILE_ID + F.FILE_NAME + F.FILE_EXT
이렇게 문자열이 결합된 구조라는 걸 알 수 있었다. CONCAT으로 해당 문자열을 모두 결합 해 준다. 처음에는 헷갈려서 + 연산자로 했는데 ,로 결합을 해 줘야 한다.
두 테이블 조인할 때는 BOARD_ID 컬럼을 기준으로 조인 해 준다.
WHERE 절에서 서브쿼리를 쓴다. 먼저 USED_GOODS_BOARD를 조회수 컬럼(VIEW) 기준으로 내림차순 해 주고 그 중 가장 높은 것만 가져와야 하니까 LIMIT1 을 걸어준다.
마지막으로 FILE_ID로 내림차순 정렬하면 끝~! 쉽다
⭐ 3. 정답코드
첫번째는 두 테이블의 BOARD_ID로 조인을 해 주었다.
SELECT CONCAT('/home/grep/src/', F.BOARD_ID, '/', F.FILE_ID, F.FILE_NAME, F.FILE_EXT) AS FILE_PATH
FROM USED_GOODS_BOARD B JOIN USED_GOODS_FILE F
ON B.BOARD_ID = F.BOARD_ID
WHERE B.BOARD_ID = (SELECT BOARD_ID
FROM USED_GOODS_BOARD
ORDER BY VIEWS DESC
LIMIT 1)
ORDER BY F.FILE_ID DESC;
USED_GOODS_BOARD와 USED_GOODS_FILE 테이블이 모두 BOARD_ID라는 동일한 컬럼을 가지고 있기 때문에, 두 테이블을 해당 컬럼을 기준으로 결합할 때 간편하게 사용할 수 있다. USING을 사용하지 않고 ON을 사용해도 되지만 USING이 더 간단하고 직관적이다.
SELECT CONCAT('/home/grep/src/', F.BOARD_ID, '/', F.FILE_ID, F.FILE_NAME, F.FILE_EXT) AS FILE_PATH
FROM USED_GOODS_BOARD B JOIN USED_GOODS_FILE F
USING (BOARD_ID)
WHERE B.BOARD_ID = (SELECT BOARD_ID
FROM USED_GOODS_BOARD
ORDER BY VIEWS DESC
LIMIT 1)
ORDER BY F.FILE_ID DESC;
'Algorithm > SQL테스트' 카테고리의 다른 글
[프로그래머스] (MySQL) 조건에 부합하는 중고거래 상태 조회하기 (4) | 2025.01.14 |
---|---|
[프로그래머스] (MySQL) 자동차 평균 대여 기간 구하기 문제 풀이 (10) | 2025.01.14 |
[프로그래머스] (MySQL) ⭐⭐⭐ 멸종위기의 대장균 찾기 💯 (54) | 2024.11.21 |
[프로그래머스] (MySQL) ⭐⭐⭐ 특정 세대의 대장균 찾기 문제 풀이 💯 (61) | 2024.11.21 |
[프로그래머스] 👩🏻💻 (MySQL) 오프라인/온라인 판매 데이터 통합하기 문제 풀이 (5) | 2024.11.21 |

📑 1. 문제설명




💡 2. 접근방식
FILE_PATH 출력 예시를 보고 '/home/grep/src/' + F.BOARD_ID + '/' + F.FILE_ID + F.FILE_NAME + F.FILE_EXT
이렇게 문자열이 결합된 구조라는 걸 알 수 있었다. CONCAT으로 해당 문자열을 모두 결합 해 준다. 처음에는 헷갈려서 + 연산자로 했는데 ,로 결합을 해 줘야 한다.
두 테이블 조인할 때는 BOARD_ID 컬럼을 기준으로 조인 해 준다.
WHERE 절에서 서브쿼리를 쓴다. 먼저 USED_GOODS_BOARD를 조회수 컬럼(VIEW) 기준으로 내림차순 해 주고 그 중 가장 높은 것만 가져와야 하니까 LIMIT1 을 걸어준다.
마지막으로 FILE_ID로 내림차순 정렬하면 끝~! 쉽다
⭐ 3. 정답코드
첫번째는 두 테이블의 BOARD_ID로 조인을 해 주었다.
SELECT CONCAT('/home/grep/src/', F.BOARD_ID, '/', F.FILE_ID, F.FILE_NAME, F.FILE_EXT) AS FILE_PATH FROM USED_GOODS_BOARD B JOIN USED_GOODS_FILE F ON B.BOARD_ID = F.BOARD_ID WHERE B.BOARD_ID = (SELECT BOARD_ID FROM USED_GOODS_BOARD ORDER BY VIEWS DESC LIMIT 1) ORDER BY F.FILE_ID DESC;
USED_GOODS_BOARD와 USED_GOODS_FILE 테이블이 모두 BOARD_ID라는 동일한 컬럼을 가지고 있기 때문에, 두 테이블을 해당 컬럼을 기준으로 결합할 때 간편하게 사용할 수 있다. USING을 사용하지 않고 ON을 사용해도 되지만 USING이 더 간단하고 직관적이다.
SELECT CONCAT('/home/grep/src/', F.BOARD_ID, '/', F.FILE_ID, F.FILE_NAME, F.FILE_EXT) AS FILE_PATH FROM USED_GOODS_BOARD B JOIN USED_GOODS_FILE F USING (BOARD_ID) WHERE B.BOARD_ID = (SELECT BOARD_ID FROM USED_GOODS_BOARD ORDER BY VIEWS DESC LIMIT 1) ORDER BY F.FILE_ID DESC;
'Algorithm > SQL테스트' 카테고리의 다른 글
[프로그래머스] (MySQL) 조건에 부합하는 중고거래 상태 조회하기 (4) | 2025.01.14 |
---|---|
[프로그래머스] (MySQL) 자동차 평균 대여 기간 구하기 문제 풀이 (10) | 2025.01.14 |
[프로그래머스] (MySQL) ⭐⭐⭐ 멸종위기의 대장균 찾기 💯 (54) | 2024.11.21 |
[프로그래머스] (MySQL) ⭐⭐⭐ 특정 세대의 대장균 찾기 문제 풀이 💯 (61) | 2024.11.21 |
[프로그래머스] 👩🏻💻 (MySQL) 오프라인/온라인 판매 데이터 통합하기 문제 풀이 (5) | 2024.11.21 |