250x250
Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

데이터 놀이터

String, Date - 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 본문

SQL

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

jjjk84 2023. 8. 26. 22:42
728x90

1. 문제

 

USED_GOODS_BOARD와 USED_GOODS_FILE 테이블에서

조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회하는 SQL문을 작성해주세요.

첨부파일 경로는 FILE ID를 기준으로 내림차순 정렬해주세요.

기본적인 파일경로는 /home/grep/src/ 이며, 게시글 ID를 기준으로 디렉토리가 구분되고,

파일이름은 파일 ID, 파일 이름, 파일 확장자로 구성되도록 출력해주세요.

조회수가 가장 높은 게시물은 하나만 존재합니다.

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

 

2. 문제 조건

 

  1. 조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회 -> ORDER BY, LIMIT
  2. 파일경로 : /home/grep/src/게시물 ID/파일 ID + 파일 이름. 파일 확장자 -> CONCAT
  3. 첨부파일 경로는 FILE ID를 기준으로 내림차순 정렬 -> ORDER BY

 

3. 코드 작성

 

/*
1. 조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회
2. 파일경로 : /home/grep/src/게시물 ID/파일 ID + 파일 이름. 파일 확장자
*/

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

 

4. 회고

 

  • 문자열 자르기 함수(LEFT, RIGHT, SUBSTR)는 비교적 익숙했지만 문자열 합치기 함수는 처음 보았다. 처음에 Python처럼 +를 썼는데 Mysql에서는 CONCAT 함수를 써야한다.
    • CONCAT(a,b,c) : abc 합쳐서 나오게 하기
    • CONCAT_WS(구분자, a, b, c) : abc 사이에 구분자를 넣어서 나오게 하기
728x90