SQL

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค level 3] ์กฐํšŒ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ์ค‘๊ณ ๊ฑฐ๋ž˜ ๊ฒŒ์‹œํŒ์˜ ์ฒจ๋ถ€ํŒŒ์ผ ์กฐํšŒํ•˜๊ธฐ

1eehyunji 2023. 8. 3. 20:28

๋ฌธ์ œ ์„ค๋ช…

๋‹ค์Œ์€ ์ค‘๊ณ ๊ฑฐ๋ž˜ ๊ฒŒ์‹œํŒ ์ •๋ณด๋ฅผ ๋‹ด์€ USED_GOODS_BOARD ํ…Œ์ด๋ธ”๊ณผ ์ค‘๊ณ ๊ฑฐ๋ž˜ ๊ฒŒ์‹œํŒ ์ฒจ๋ถ€ํŒŒ์ผ ์ •๋ณด๋ฅผ ๋‹ด์€ USED_GOODS_FILE ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. USED_GOODS_BOARD ํ…Œ์ด๋ธ”์€ ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ BOARD_ID, WRITER_ID, TITLE, CONTENTS, PRICE, CREATED_DATE, STATUS, VIEWS์€ ๊ฒŒ์‹œ๊ธ€ ID, ์ž‘์„ฑ์ž ID, ๊ฒŒ์‹œ๊ธ€ ์ œ๋ชฉ, ๊ฒŒ์‹œ๊ธ€ ๋‚ด์šฉ, ๊ฐ€๊ฒฉ, ์ž‘์„ฑ์ผ, ๊ฑฐ๋ž˜์ƒํƒœ, ์กฐํšŒ์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

Column nameTypeNullable

BOARD_ID VARCHAR(5) FALSE
WRITER_ID VARCHAR(50) FALSE
TITLE VARCHAR(100) FALSE
CONTENTS VARCHAR(1000) FALSE
PRICE NUMBER FALSE
CREATED_DATE DATE FALSE
STATUS VARCHAR(10) FALSE
VIEWS NUMBER FALSE

USED_GOODS_FILE ํ…Œ์ด๋ธ”์€ ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ FILE_ID, FILE_EXT, FILE_NAME, BOARD_ID๋Š” ๊ฐ๊ฐ ํŒŒ์ผ ID, ํŒŒ์ผ ํ™•์žฅ์ž, ํŒŒ์ผ ์ด๋ฆ„, ๊ฒŒ์‹œ๊ธ€ ID๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

Column nameTypeNullable

FILE_ID VARCHAR(10) FALSE
FILE_EXT VARCHAR(5) FALSE
FILE_NAME VARCHAR(256) FALSE
BOARD_ID VARCHAR(10) FALSE

๋ฌธ์ œ

USED_GOODS_BOARD์™€ USED_GOODS_FILE ํ…Œ์ด๋ธ”์—์„œ ์กฐํšŒ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ์ค‘๊ณ ๊ฑฐ๋ž˜ ๊ฒŒ์‹œ๋ฌผ์— ๋Œ€ํ•œ ์ฒจ๋ถ€ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ฒจ๋ถ€ํŒŒ์ผ ๊ฒฝ๋กœ๋Š” FILE ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”. ๊ธฐ๋ณธ์ ์ธ ํŒŒ์ผ๊ฒฝ๋กœ๋Š” /home/grep/src/ ์ด๋ฉฐ, ๊ฒŒ์‹œ๊ธ€ ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๊ตฌ๋ถ„๋˜๊ณ , ํŒŒ์ผ์ด๋ฆ„์€ ํŒŒ์ผ ID, ํŒŒ์ผ ์ด๋ฆ„, ํŒŒ์ผ ํ™•์žฅ์ž๋กœ ๊ตฌ์„ฑ๋˜๋„๋ก ์ถœ๋ ฅํ•ด์ฃผ์„ธ์š”. ์กฐํšŒ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ๊ฒŒ์‹œ๋ฌผ์€ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

 

๋ฌธ์ œํ’€์ด

SELECT CONCAT('/home/grep/src/',USED_GOODS_BOARD.BOARD_ID, '/',FILE_ID,FILE_NAME,FILE_EXT)
FROM USED_GOODS_BOARD
JOIN USED_GOODS_FILE ON USED_GOODS_BOARD.BOARD_ID=USED_GOODS_FILE.BOARD_ID
WHERE USED_GOODS_BOARD.VIEWS=(SELECT MAX(VIEWS) FROM USED_GOODS_BOARD)
ORDER BY FILE_ID DESC;

1. USED_GOODS_BOARD ํ…Œ์ด๋ธ”์˜ ์กฐํšŒ์ˆ˜์˜ ์ตœ๋Œ€๊ฐ’์„ ์ถ”์ถœํ•˜๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ๋งŒ๋“ ๋‹ค.

2. USED_GOODS_BOARD ํ…Œ์ด๋ธ”๊ณผ USED_GOODS_FILE ํ…Œ์ด๋ธ”์˜ BOARD_ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ JOINํ•œ๋‹ค.

3. ์กฐํšŒ์ˆ˜๊ฐ€ ์•ž์„  ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ ์ถ”์ถœํ•œ ์ตœ๋Œ€ ์กฐํšŒ์ˆ˜์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•œ๋‹ค. 

4. ์ฒจ๋ถ€ ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•ด CONCAT() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ๋‹ค.

5. ์ถ”์ถœ๋œ ๋ฐ์ดํ„ฐ๋“ค์€ ํŒŒ์ผ ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜์—ฌ ์ถœ๋ ฅํ•œ๋‹ค.