์กฐ์ธ์กฐ๊ฑด์ ์ต์ ๊ฐ์ = ์ฐ๊ฒฐํ ํ
์ด๋ธ ์ - 1
(1) ๋ณ์นญ ์์ด ์์ฑํ ์ ์๋ค.
-- SELECT ํ
์ด๋ธ1.์ปฌ๋ผ๋ช
, ํ
์ด๋ธ1.์ปฌ๋ผ๋ช
, ํ
์ด๋ธ2.์ปฌ๋ผ๋ช
, ํ
์ด๋ธ2.์ปฌ๋ผ๋ช
-- FROM ํ
์ด๋ธ1, ํ
์ด๋ธ2
-- WHERE ํ
์ด๋ธ1.์ปฌ๋ผ๋ช
= ํ
์ด๋ธ2.์ปฌ๋ผ๋ช
;
(2) FROM์ ์์ ์ ํ ํ ์ด๋ธ์ ๋ณ์นญ์ ์ฌ์ฉํ ์ ์๋ค.
-- SELECT ๋ณ์นญ1.์ปฌ๋ผ๋ช
, ๋ณ์นญ1.์ปฌ๋ผ๋ช
, ๋ณ์นญ2.์ปฌ๋ผ๋ช
, ๋ณ์นญ2.์ปฌ๋ผ๋ช
-- FROM ํ
์ด๋ธ1 ๋ณ์นญ1, ํ
์ด๋ธ2 ๋ณ์นญ2
-- WHERE ๋ณ์นญ1.์ปฌ๋ผ๋ช
= ๋ณ์นญ2.์ปฌ๋ผ๋ช
;
(3) 2๊ฐ ์ด์์ ํ ์ด๋ธ๋ผ๋ฆฌ ์กฐ์ธํ ์ ์๊ณ , ์ฌ๋ฌ ํ ์ด๋ธ ๊ฐ์ ์กฐ์ธ ์กฐ๊ฑด ๊ด๊ณ๋ ๋ค์ํ๊ฒ ์ ์ํ ์ ์๋ค.
-- SELECT ๋ณ์นญ1.์ปฌ๋ผ๋ช
, ๋ณ์นญ1.์ปฌ๋ผ๋ช
, ๋ณ์นญ2.์ปฌ๋ผ๋ช
, ๋ณ์นญ2.์ปฌ๋ผ๋ช
, ๋ณ์นญ3.์ปฌ๋ผ๋ช
-- FROM ํ
์ด๋ธ1 ๋ณ์นญ1, ํ
์ด๋ธ2 ๋ณ์นญ2, ํ
์ด๋ธ3 ๋ณ์นญ3
-- WHERE ๋ณ์นญ1.์ปฌ๋ผ๋ช
= ๋ณ์นญ2.์ปฌ๋ผ๋ช
-- AND ๋ณ์นญ1.์ปฌ๋ผ๋ช
= ๋ณ์นญ3.์ปฌ๋ผ๋ช
;
-- SELECT ๋ณ์นญ1.์ปฌ๋ผ๋ช
, ๋ณ์นญ1.์ปฌ๋ผ๋ช
, ๋ณ์นญ2.์ปฌ๋ผ๋ช
, ๋ณ์นญ2.์ปฌ๋ผ๋ช
, ๋ณ์นญ3.์ปฌ๋ผ๋ช
-- FROM ํ
์ด๋ธ1 ๋ณ์นญ1, ํ
์ด๋ธ2 ๋ณ์นญ2, ํ
์ด๋ธ3 ๋ณ์นญ3
-- WHERE ๋ณ์นญ1.์ปฌ๋ผ๋ช
= ๋ณ์นญ2.์ปฌ๋ผ๋ช
-- AND ๋ณ์นญ2.์ปฌ๋ผ๋ช
= ๋ณ์นญ3.์ปฌ๋ผ๋ช
;
์กฐ์ธ์กฐ๊ฑด์ ์ง์ ํ์ง ์๊ณ , ๋ ๊ฐ์ด์์ ํ
์ด๋ธ์ ์กฐ์ธ
ํ๋ ๊ฒ์ด๋ค.๋ชจ๋ ๋ฐ์ดํฐ
๋ฅผ ์ ๋ถ ๊ฐ์ ธ์ค๊ฒ๋๋ค.ํน์ ์ปฌ๋ผ๊ฐ์ด ์๋ก ๊ฐ์ ๊ฒ๋ผ๋ฆฌ ์กฐ์ธ
ํด์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ๊ฒ โ ์์ฑ์ ๊ฐ์ด ๊ฐ์ ํ๋ผ๋ฆฌ ์ฐ๊ฒฐํ๋ค.-- ๊ธ์ฌ๋ฅผ 10000 ์ด์ ๋ฐ๋ ์ง์์ ์์ด๋, ์ด๋ฆ, ์ง์ข
์์ด๋, ์ง์ข
์ ๋ชฉ, ์ต์ ๊ธ์ฌ, ์ต๊ณ ๊ธ์ฌ, ๊ธ์ฌ๋ฅผ ์กฐํํ๊ธฐ
-- EMPLOYEES EMPLOYEES EMPLOYEES
-- JOBS JOBS JOBS JOBS EMPLOYEES
SELECT E.EMPLOYEE_ID, E.FIRST_NAME, E.JOB_ID, J.JOB_TITLE, J.MAX_SALARY, J.MIN_SALARY, E.SALARY
FROM EMPLOYEES E, JOBS J
WHERE E.SALARY >= 10000 -- ๊ฒ์์กฐ๊ฑด
AND E.JOB_ID = J.JOB_ID -- ์กฐ์ธ์กฐ๊ฑด
ORDER BY E.EMPLOYEE_ID;
์ดํ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์กฐ์ธ
ํ๋ค.-- ๊ธ์ฌ๊ฐ 10000 ์ด์์ธ ์ง์๋ค์ ์ง์ ์์ด๋, ์ด๋ฆ, ๊ธ์ฌ, ๊ธ์ฌ๋ฑ๊ธ ์กฐํํ๊ธฐ
-- ๊ธ์ฌ์ ๋ํ ์กฐํ์กฐ๊ฑด์ด ๊ธ์ฌ๋ฑ๊ธ๊ณผ ๋ง์๋จ์ด์ง์ง ์๋๋ค.
-- ์ผ์นํ๋ ๊ฐ์ด ์๋๋ผ, ๋ฒ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํ๋ค์ ์กฐํํ ๊ฒ์ด๋ค. ์ด ๊ฒฝ์ฐ ๋น๋ฑ๊ฐ์กฐ์ธ์ ํ์ฉํ๋ค.
-- E E E E S
SELECT E.EMPLOYEE_ID, E.FIRST_NAME, E.SALARY, S.GRADE
FROM EMPLOYEES E, SALARY_GRADE S
WHERE E.SALARY >= 10000
AND E.SALARY >= S.MIN_SALARY AND E.SALARY <= S.MAX_SALARY -- ๋น๋ฑ๊ฐ ์กฐ์ธ์กฐ๊ฑด
ORDER BY E.EMPLOYEE_ID;
์๊ธฐ ์์ ๊ณผ ์กฐ์ธ
ํ๋ค.์ผ๋๋ค
์ ๊ด๊ณ์ด๋ค.๋ณ์นญ
์ ์ง๊ณ ์กฐ์ธ์กฐ๊ฑด์ ์์ฑํ๋ค.ex
EMP.EMPLOYEE_ID EMP_ID, MNG.EMPLOYEE_ID MNG_ID )-- ๊ธ์ฌ๊ฐ 10000 ์ด์์ธ ์ง์๋ค์ ์ง์ ์์ด๋, ์ด๋ฆ, ๊ธ์ฌ, ๊ธ์ฌ๋ฑ๊ธ ์กฐํํ๊ธฐ
-- ๊ธ์ฌ์ ๋ํ ์กฐํ์กฐ๊ฑด์ด ๊ธ์ฌ๋ฑ๊ธ๊ณผ ๋ง์๋จ์ด์ง์ง ์๋๋ค.
-- ์ผ์นํ๋ ๊ฐ์ด ์๋๋ผ, ๋ฒ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํ๋ค์ ์กฐํํ ๊ฒ์ด๋ค. ์ด ๊ฒฝ์ฐ ๋น๋ฑ๊ฐ์กฐ์ธ์ ํ์ฉํ๋ค.
-- E E E E S
SELECT E.EMPLOYEE_ID, E.FIRST_NAME, E.SALARY, S.GRADE
FROM EMPLOYEES E, SALARY_GRADE S
WHERE E.SALARY >= 10000
AND E.SALARY >= S.MIN_SALARY AND E.SALARY <= S.MAX_SALARY -- ๋น๋ฑ๊ฐ ์กฐ์ธ์กฐ๊ฑด
ORDER BY E.EMPLOYEE_ID;
์ฐ๊ฒฐ๋๋ ํ์ด ์๋ ์ ๋ณด๋ ์กฐ์ธ์ ์ฐธ์ฌ
ํ ์ ์๊ฒ ํ๋ ์กฐ์ธ-- ์ฌ์์์ด๋, ์ฌ์์ด๋ฆ, ํด๋น ์ฌ์
์ ๊ด๋ฆฌํ๋ ๊ด๋ฆฌ์ ์์ด๋, ๊ด๋ฆฌ์ ์ด๋ฆ์ ์กฐํํ๊ธฐ
-- E1 E2 E3 E
SELECT EMP.EMPLOYEE_ID EMP_ID,
EMP.FIRST_NAME EMP_NAME,
MGR.EMPLOYEE_ID MRG_ID,
MGR.FIRST_NAME MGR_NAME
FROM EMPLOYEES EMP, EMPLOYEES MGR -- ์ฌ์์ ๋ณด ์ญํ ์ ํ๋ EMP, ๊ด๋ฆฌ์์ธ ์ฌ์์ ๋ณด ์ญํ ์ ํ๋ MGR
WHERE EMP.MANAGER_ID = MGR.EMPLOYEE_ID
ORDER BY EMP_ID;
-- ์ง์ข
์์ด๋, ์ง์ข
์ต์ ๊ธ์ฌ, ์ง์ข
์ต์ ๊ธ์ฌ์ ๋ฑ๊ธ, ์ง์ข
์ต๊ณ ๊ธ์ฌ, ์ง์ข
์ต๊ณ ๊ธ์ฌ์ ๋ฑ๊ธ ***(๊ฐ์ ํ
์ด๋ธ ์ฌ๋ฌ ๊ฐ ์ฌ์ฉํ๊ธฐ)
-- J J S1 J S2
-- ๊ธ์ฌ ๋ฑ๊ธํ
์ด๋ธ์ด 2๊ฐ ํ์ํ๋ค. (์ต์ ๊ธ์ฌ, ์ต๊ณ ๊ธ์ฌ์ ์กฐ์ธํ ๋ ์ฌ์ฉํ ๊ฐ๊ฐ ํ
์ด๋ธ 2๊ฐ.)
SELECT J.JOB_ID, J.MIN_SALARY, S1.GRADE MIN_GRADE, J.MAX_SALARY, S2.GRADE MAX_GRADE
FROM JOBS J, SALARY_GRADE S1, SALARY_GRADE S2
WHERE (J.MIN_SALARY >= S1.MIN_SALARY AND J.MIN_SALARY <= S1.MAX_SALARY)
AND (J.MAX_SALARY >= S2.MIN_SALARY AND J.MAX_SALARY <= S2.MAX_SALARY)
ORDER BY J.JOB_ID;