๐ข ๋ณธ ํฌ์คํ ์ ํ์ฉ๋๋ ๊ธฐ๋ณธ ๋ฌธ์ ๋ฐ ์๋ฃ ์ถ์ฒ๋
ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ ์คํธ ์ฐ์ต,
https://school.programmers.co.kr/learn/challenges?page=1&languages=mysql%2Coracle์์ ๋ฐํ๋๋ค.
· ๋ณธ ๋ฌธ์ https://school.programmers.co.kr/learn/courses/30/lessons/164673
โ ๋ฌธ์
๋ฌธ์ ์ค๋ช
๋ค์์ ์ค๊ณ ๊ฑฐ๋ ๊ฒ์ํ ์ ๋ณด๋ฅผ ๋ด์ USED_GOODS_BOARD ํ ์ด๋ธ๊ณผ ์ค๊ณ ๊ฑฐ๋ ๊ฒ์ํ ์ฒจ๋ถํ์ผ ์ ๋ณด๋ฅผ ๋ด์ USED_GOODS_REPLY ํ ์ด๋ธ์ ๋๋ค.
USED_GOODS_BOARD ํ ์ด๋ธ์ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ BOARD_ID, WRITER_ID, TITLE, CONTENTS, PRICE, CREATED_DATE, STATUS, VIEWS์ ๊ฒ์๊ธ ID, ์์ฑ์ ID, ๊ฒ์๊ธ ์ ๋ชฉ, ๊ฒ์๊ธ ๋ด์ฉ, ๊ฐ๊ฒฉ, ์์ฑ์ผ, ๊ฑฐ๋์ํ, ์กฐํ์๋ฅผ ์๋ฏธํฉ๋๋ค.
Column name | Type | Nullable |
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_REPLY ํ ์ด๋ธ์ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ REPLY_ID, BOARD_ID, WRITER_ID, CONTENTS, CREATED_DATE๋ ๊ฐ๊ฐ ๋๊ธ ID, ๊ฒ์๊ธ ID, ์์ฑ์ ID, ๋๊ธ ๋ด์ฉ, ์์ฑ์ผ์ ์๋ฏธํฉ๋๋ค
Column name | Type | Nullable |
REPLY_ID | VARCHAR(10) | FALSE |
BOARD_ID | VARCHAR(5) | FALSE |
WRITER_ID | VARCHAR(50) | FALSE |
CONTENTS | VARCHAR(1000) | TRUE |
CREATED_DATE | DATE | FALSE |
๋ฌธ์
USED_GOODS_BOARD์ USED_GOODS_REPLY ํ ์ด๋ธ์์ 2022๋ 10์์ ์์ฑ๋ ๊ฒ์๊ธ ์ ๋ชฉ, ๊ฒ์๊ธ ID, ๋๊ธ ID, ๋๊ธ ์์ฑ์ ID, ๋๊ธ ๋ด์ฉ, ๋๊ธ ์์ฑ์ผ์ ์กฐํํ๋ SQL๋ฌธ์ ์์ฑํด์ฃผ์ธ์. ๊ฒฐ๊ณผ๋ ๋๊ธ ์์ฑ์ผ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ฃผ์๊ณ , ๋๊ธ ์์ฑ์ผ์ด ๊ฐ๋ค๋ฉด ๊ฒ์๊ธ ์ ๋ชฉ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ฃผ์ธ์.
โ ํ์ด
๋ฌธ์ ์๊ตฌ์ฌํญ
2022๋ 10์์ ์์ฑ๋ ๊ฒ์๊ธ ์ ๋ชฉ, ๊ฒ์๊ธ ID, ๋๊ธ ID, ๋๊ธ ์์ฑ์ ID, ๋๊ธ ๋ด์ฉ, ๋๊ธ ์์ฑ์ผ์ ์กฐํ
> ์์ฑ์์ด 2022.10์ธ ๊ฒ์๊ธ - WHERE ์กฐ๊ฑด1
๊ฒฐ๊ณผ๋ ๋๊ธ ์์ฑ์ผ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ < ์ ๋ ฌ์กฐ๊ฑด1
๋๊ธ ์์ฑ์ผ์ด ๊ฐ๋ค๋ฉด ๊ฒ์๊ธ ์ ๋ชฉ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ < ์ ๋ ฌ์กฐ๊ฑด2
ํ ์ด๋ธ ์กฐ์ธํ ๋ (๊ฒ์๊ธ:๋๊ธ) = 1 : N ๊ด๊ณ๋ผ๋ ๊ฒ์ ์๊ฐํ๊ณ JOIN์ ํด์ค์ผ ํ๋ค.
๊ทธ๋์ ๋๊ธ ํ ์ด๋ธ ๊ธฐ์ค์ผ๋ก left join์ ํด์คฌ๋ค.
WHERE์ ์ ๋ฐ์ดํฐ ๊ฐ๊ณต์ ์ค์ด๊ธฐ ์ํด BETWEEN์ ์ ์ฌ์ฉํ๋ค.
SELECT A.TITLE AS TITLE
, A.BOARD_ID AS BOARD_ID
, B.REPLY_ID AS REPLY_ID
, B.WRITER_ID AS WRITER_ID
, B.CONTENTS AS CONTENTS
, DATE_FORMAT(B.CREATED_DATE, '%Y-%m-%d') AS CREATED_DATE
FROM USED_GOODS_REPLY B
LEFT JOIN USED_GOODS_BOARD A
ON A.BOARD_ID = B.BOARD_ID
WHERE A.CREATED_DATE BETWEEN '2022-10-01 00:00:00' AND '2022-10-31 23:59:59'
ORDER BY 6, 1;
โ ํ์ด ํ๊ณ
์ฒ์์ ๋ฌด์์ ๋๊ธ์ด ์๋ ๊ฒ์๋ฌผ์ด ์์์๋ ์๋ค๋ ์๊ฐ์ ๊ฒ์๊ธ ํ ์ด๋ธ ๊ธฐ์ค์ผ๋ก left join์ ํด์ค ๊ฒ์ด ์ค๋ฅ์๋ค.
๋ฌธ์ ์ ์ฝ๊ณ ํ ์ด๋ธ ๊ฐ ๊ด๊ณ์ ๋ํด ๊ผผ๊ผผํ๊ฒ ์๊ฐํด๋ณผ ๊ฒ.
๋ํ ์กฐ์ธํ ๋ ํ ์ด๋ธ๋ณ ์ปฌ๋ผ๋ช ์ด ๊ฐ๋ค๊ณ ํด์ ๊ณตํต ์ปฌ๋ผ์ด๋ผ๊ณ ์ฃ๋ถ๋ฆฌ ์๊ฐํ์ง๋ง ๊ฒ.
์) WRITER_ID