๋ฌธ์ ์ค๋ช
๋ค์์ ์ค๊ณ ๊ฑฐ๋ ๊ฒ์ํ ์ ๋ณด๋ฅผ ๋ด์ 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๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ์ฌ ์ถ๋ ฅํ๋ค.