<문제>
USED_GOODS_BOARD와 USED_GOODS_FILE 테이블에서 조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회하는 SQL문을 작성해주세요. 첨부파일 경로는 FILE ID를 기준으로 내림차순 정렬해주세요. 기본적인 파일경로는 /home/grep/src/ 이며, 게시글 ID를 기준으로 디렉토리가 구분되고, 파일이름은 파일 ID, 파일 이름, 파일 확장자로 구성되도록 출력해주세요. 조회수가 가장 높은 게시물은 하나만 존재합니다.
<나의 풀이>
select concat('/home/grep/src/', b.board_id, '/', b.file_id, b.file_name, b.file_ext) 'file_path'
from used_goods_board a inner join used_goods_file b on a.board_id=b.board_id
where a.views = (select max(views)
from used_goods_board
)
order by b.file_id desc
1. 기본적인 파일경로는 /home/grep/src/ 이며, 게시글 ID를 기준으로 디렉토리가 구분되고, 파일이름은 파일 ID, 파일 이름, 파일 확장자로 구성되도록 출력되어야 하기 때문에 concat() 을 이용하여 문자열 합쳐주기
--> concat('/home/grep/src/', b.board_id, '/', b.file_id, b.file_name, b.file_ext) 'file_path'
2. 두 개의 테이블을 각 board_id로 inner join 으로 결합해주기
--> from used_goods_board a inner join used_goods_file b on a.board_id=b.board_id
3. 조회수가 가장 높은 중고거래 게실물을 찾아야 하기 때문에 스칼라 서브쿼리 사용
(서브쿼리가 하나의 값을 반환하는 경우, 이를 WHERE 절의 필터링 값으로 사용할 수 있으며 이를 스칼라 서브쿼리 라고 부른다.)
-->where a.views = (select max(views) from used_goods_board)
4. 파일 아이디를 기준으로 내림차순이기 때문에
-->order by b.file_id desc
concat() - 여러 문자열를 하나의 문자열로 합치기
SELECT CONCAT('안녕하세요.', '감사해요.', '잘있어요.', '다시만나요.')
출처: https://extbrain.tistory.com/52 [확장형 뇌 저장소:티스토리]
# 안녕하세요.감사해요.잘있어요.다시만나요.
'CODEKATA' 카테고리의 다른 글
[MySQL] 저자 별 카테고리 별 매출액 집계하기 (0) | 2024.07.31 |
---|---|
[MySQL] 주문량이 많은 아이스크림들 조회하기 (0) | 2024.07.31 |
[Python] 핸드폰 번호 가리기 (0) | 2024.07.22 |
[MySQL] 헤비 유저가 소유한 장소 (0) | 2024.07.22 |
[MySQL] 자동차 평균 대여 기간 구하기 (0) | 2024.07.22 |