๐Ÿ—๏ธPROGRAMMERS/SQL

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

๋น™๋””์šฉ 2024. 4. 22.

์‹œ์šฉ์–ธ์–ด : MYSQL

LEVEL : 3

๋ฌธ์ œ : ์กฐํšŒ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ์ค‘๊ณ ๊ฑฐ๋ž˜ ๊ฒŒ์‹œํŒ์˜ ์ฒจ๋ถ€ํŒŒ์ผ ์กฐํšŒํ•˜๊ธฐs://schoo

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

๋ฌธ์ œํ’€์ด

SELECT
CONCAT('/home/grep/src/', B.BOARD_ID , '/', B.FILE_ID , B.FILE_NAME,B.FILE_EXT) AS FILE_PATH 
FROM USED_GOODS_BOARD A
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;

- CONCAT์„ ์‚ฌ์šฉํ•ด FILE_PATH๋ฅผ ๋ฌธ์ œ์—์„œ ์›ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋งŒ๋“ค์—ˆ๋‹ค.

- ์กฐ์ธ์„ ์‚ฌ์šฉํ•ด A์™€ B๋ฅผ ๋ฌถ๊ณ , ์ตœ๋Œ€๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š” ํ•จ์ˆ˜์ธ MAXํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์กฐํšŒ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ๊ฒŒ์‹œ๊ธ€ ํ•˜๋‚˜๋งŒ์„ ๋ฝ‘์•„๋ƒˆ๋‹ค.

- ํŒŒ์ผ ์•„์ด๋””๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ๋กœ ๋งˆ๋ฌด๋ฆฌ ํ–ˆ๋‹ค.

ํ›„๊ธฐ

๋ฌธ์ œ๋ฅผ ๋‹ค ํ’€๊ณ  ๋‹ต์„ ํ™•์ธํ•ด๋ณด๋‹ˆ, JOIN์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

 

์•„๋ž˜๋Š” ์„œ๋ธŒ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ ํ’€์ด๋ฐฉ๋ฒ•

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;

๋Œ“๊ธ€