ํ๋์ ๋ฉ๋ด๋ ์ฌ๋ฌ๊ฐ์ ์ ์ ๊ทธ๋ฃน๊ณผ ์ฐ๊ฒฐ๋ ์ ์๊ณ ํ๋์ ์ ์ ๊ทธ๋ฃน๋ ์ฌ๋ฌ๊ฐ์ ๋ฉ๋ด์ ๋ณด์ ์ฐ๊ฒฐ๋ ์ ์๊ธฐ์ ๋ค๋๋ค ๊ด๊ณ๋ผ๊ณ ํ ์ ์๋ค.(ํ์๊ณผ ์ ์ ๊ทธ๋ฃน๋ ๋ง์ฐฌ๊ฐ์ง๋ค)
์๋ฅผ ๋ค์ด ํ์๊ด๋ฆฌ๋ผ๋ ๋ฉ๋ด๋ฅผ A๊ทธ๋ฃน๋ ๊ฐ์ง ์ ์๊ณ B๊ทธ๋ฃน๋ ๊ฐ์ง ์ ์๋ค.
A๊ทธ๋ฃน์ ํ์๊ด๋ฆฌ ๋ฟ ์๋๋ผ ์์คํ ๊ด๋ฆฌ์ ๋ฉ๋ด์๋ ์ฐ๊ฒฐ๋ ์ ์๋ค.
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ๋ค๋๋ค ๊ด๊ณ๋ฅผ ํ์ด๋ด๊ธฐ ์ํด ์ค๊ฐ์ ๋งคํ ํ ์ด๋ธ์ ๋ฌ์ 1:N, N:1๋ก ๊ด๊ณ๋ฅผ ํ
๋งคํ ํ ์ด๋ธ์ ์ฐ๊ฒฐ์ํค๋ ํ ์ด๋ค์ PK๋ง์ ๊ฐ์ง๊ณ ์๊ณ ์ด๋ฅผ ๊ฐ์ง๊ณ ๊ฐ ํ ์ด๋ธ์์ ์๋ก ์ฐธ์กฐํ ์ ์๋ค.
์์ ๊ด๊ณ์์ ํ์์ด ์์ ๊ณผ ์ฐ๊ฒฐ๋ ๋ฉ๋ด์ ๋ณด๋ฅผ ์๊ณ ์ถ์ผ๋ฉด ์๋์ฒ๋ผ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ฉด ๋๋ค.
/* ์ฌ์ฉ์์ ๋งคํ๋ ๋ฉ๋ด ์กฐํ */
WITH UserGroupCodes AS (
/* ์ ์ ๊ทธ๋ฃน์ฝ๋ ์กฐํ */
SELECT USER_GROUP_CD
FROM USER_USER_GROUP_MAPPING
WHERE USER_ID = 'lsy'
/* ๋ฉ๋ด์ฝ๋ ์กฐํ */
), MenuCodes AS (
SELECT MENU_CD
FROM MENU_USER_GROUP_MAPPING
WHERE USER_GROUP_CD IN (SELECT USER_GROUP_CD FROM UserGroupCodes)
)
/* ์ต์ข
๋ฉ๋ด ์ ๋ณด ์กฐํ */
SELECT A.MENU_CD AS menuCd /* ๋ฉ๋ด์ฝ๋ */
, A.MENU_NAME AS menuName /* ๋ฉ๋ด๋ช
*/
, A.MENU_URL AS menuUrl /* ๋ฉ๋ด url */
, A.MENU_CD_SEQ AS menuCdSeq /* ๋ฉ๋ด ๋
ธ์ถ ์์ */
, A.UPPER_MENU_CD AS upperMenuCd/* ์์์ฝ๋ */
FROM MENU_INFO A
WHERE A.MENU_CD IN (SELECT MENU_CD FROM MenuCodes)
AND A.USE_YN = 'Y'
ํ์ ํ ์ด๋ธ์ ๋ฉ๋ดํ ์ด๋ธ๊ณผ ์ ํ ๊ด๊ณ๊ฐ ์์ผ๋ ๋งคํ ํ ์ด๋ธ์ ์ด์ฉํด์ผ ํ๋ค.
๊ฒ์์ฒ๋ผ ์ดํดํ๋ฉด ์ฝ๋ค.
๋ฉ๋ด์ ๋ณด๋ผ๋ ๋ณด์ค๋ชน์ ์ก๊ธฐ ์ํด ์ ์ ๊ทธ๋ฃน์ฝ๋์ ๋ฉ๋ด์ฝ๋๋ผ๋ ์์ดํ ์ ์ป์ด์ผ ํ๋ค.
๋ณธ์ธ์ ์์ด๋๋ก ์ ์ ๊ทธ๋ฃน์ฝ๋๋ฅผ ๋จผ์ ๊ตฌํ ๋ค ์ ์ด์ ๋ค์์ด ๋ค์ ๋ฉ๋ด์ฝ๋๋ฅผ ์ป๋๋ค.(์์๋๋ก ํด์ผ ํจ)
๊ทธ ๋ค ๋ฉ๋ด์ฝ๋๋ฅผ ํตํด ์ต์ข ๋ณด์ค๋ชน์ธ ๋ฉ๋ด์ ๋ณด๋ฅผ ์ ๋ณตํ๋ค.

๊ฒฐ๊ณผ(๋ณด์ค ๋ชน ์ฌ๋ฅ)
๊ฐ์ธ ์คํฐ๋ ๊ธฐ๋ก์ ๋ฉ๋ชจํ๋ ๊ณต๊ฐ์ด๋ผ ํ๋ฆฐ์ ์ด ์์ ์ ์์ต๋๋ค.
ํ๋ฆฐ ์ ์์ ๊ฒฝ์ฐ ๋๊ธ ๋ถํ๋๋ฆฝ๋๋ค.
'IT > DataBase' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[cubrid] ์๋ธ ์ฟผ๋ฆฌ ๋ณ์นญ ์ฌ์ฉ ์ ์ฃผ์์ (43) | 2024.01.13 |
---|---|
[Oracle] N๊ฐ์ํ๊น์ง ๋ ์ง ๊ตฌํ๊ธฐ (feat. Connect by level) (65) | 2023.12.03 |
[Oracle] ORDER BY ์ ์กฐ๊ฑด ์ฒ๋ฆฌ (56) | 2023.09.24 |
[Oracle] ๊ฐ์ฅ ๋ง์ง๋ง row ์กฐํ(feat. partition by) (0) | 2023.08.07 |
[MongoDB] ๋ชฝ๊ณ DB 6.0.x ๋ฒ์ mongo ์ฐพ์ง ๋ชปํ๋ ๊ฒฝ์ฐ... (0) | 2023.07.17 |
๋๊ธ