๋ฌธ์
- ํ๋ก๊ทธ๋๋จธ์ค SQL ๋ฌธ์
์กฐ๊ฑด์ ๋ง๋ ์ฌ์ฉ์ ์ ๋ณด ์กฐํํ๊ธฐ
/๋ ๋ฒจ 3
- ๋ฌธ์ ๋ด์ฉ : ํ๋จ ํ๋ก๊ทธ๋๋จธ์ค ๋ฌธ์ [๋งํฌ]
๋ด๊ฐ ์์ฑํ Query
SELECT U.USER_ID , U.NICKNAME , CONCAT(U.CITY, ' ', U.STREET_ADDRESS1, ' ', U.STREET_ADDRESS2) AS ์ ์ฒด์ฃผ์ , CONCAT(LEFT(U.TLNO, 3), '-', SUBSTRING(U.TLNO, 4, 4), '-', RIGHT(U.TLNO, 4)) AS ์ ํ๋ฒํธ FROM USED_GOODS_BOARD B LEFT JOIN USED_GOODS_USER U ON B.WRITER_ID = U.USER_ID GROUP BY U.USER_ID HAVING COUNT(U.USER_ID) >= 3 ORDER BY U.USER_ID DESC;
USED_GOODS_USER
ํ
์ด๋ธ๊ณผ USED_GOODS_BOARD
ํ
์ด๋ธ์ด 1:M ๊ด๊ณ๋ผ๋ ๊ฒ์ ์ ์ ์์. (ํ ๋ช
์ ์ ์ ๊ฐ ์ฌ๋ฌ ๊ฒ์๊ธ์ ์์ฑํ ์ ์์ผ๋๊น 1:M ๊ด๊ณ)
๋ฐ๋ผ์, USED_GOODS_BOARD
ํ
์ด๋ธ์ ๊ธฐ์ค์ผ๋ก LEFT JOIN
ํด์ค์ผ 'M'๋ ๋ฒจ์ ์งํฉ ๋ฐ์ดํฐ๋ฅผ ์ป์ ์ ์์. U.USER_ID = B.WRITER_ID
๊ธฐ์ค์ผ๋ก LEFT JOIN
ํด์ค๋ค.
์ฌ์ฉ์๋ณ ๋ฐ์ดํฐ๋ฅผ ํ์ธํ๊ณ ์ถ์ผ๋ฏ๋ก, USER_ID
๊ธฐ์ค์ผ๋ก GROUP BY
ํด์ค๋ค.
HAVING
์ ์์ 3๊ฑด ์ด์์ ๊ฒ์๊ธ์ ์์ฑํ ์ฌ์ฉ์๋ง ํํฐ๋ง ํ๊ธฐ ์ํด, COUNT(U.USER_ID)>=3
์ธ ๋ฐ์ดํฐ๋ง ์ถ๋ ฅํด์ค๋ค.
์ดํ SELECT
์ ์์ ๋ฌธ์์ด ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ค. ๋จผ์ , CONCAT()
ํจ์๋ฅผ ์ด์ฉํ์ฌ, CITY
, STREET_ADDRESS1
, STREET_ADDRESS2
๋ฅผ ํฉ์น '์ ์ฒด์ฃผ์'๋ฅผ ๊ตฌํด์ค๋ค.
TLNO
์ปฌ๋ผ์ ์ ํ๋ฒํธ์ '-'๋ฅผ ๋ฃ๊ธฐ ์ํด, LEFT(U.TLNO, 3)
(์ฆ, 010) ๋ถ๋ถ, SUBSTRING(U.TLNO, 4, 4)
(์ฆ, ๊ฐ์ด๋ฐ 4๋ฒ์งธ ์ซ์๋ถํฐ 4๊ฐ์ ๋ฒํธ), RIGHT(U.TLNO, 4)
(์ฆ, ๋ค์ 4์๋ฆฌ ๋ฒํธ)๋ฅผ CONCAT()
์ ์ฌ์ฉํ์ฌ ํฉ์ณ์ค๋ค.
ORDER BY
๋ฅผ ์ด์ฉํด USER_ID
๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ๋ค.
๐๐๐ MYSQL String ๊ด๋ จ ํจ์ (CONCAT, LEFT, RIGHT, SUBSTRING) ์ ํ์ธํด ๋์ ๊ฒ!(SQL ์ฝ๋ฉํ
์คํธ ๋ณด๋ฌ ๊ฐ๊ธฐ ์ ์ ๊ผญ ๋ณต์ต!)