subQuery
Sub Query
์๋ธ ์ฟผ๋ฆฌ (Sub Query)
=> ์ฟผ๋ฆฌ๋ฌธ ์์ ์ฟผ๋ฆฌ๋ฌธ์ ์คํํ๋ ๊ธฐ๋ฒ (SELECT์ / WHERE์ /FROM ์ ์์ ๋ค์ด๊ฐ๋ ์ฟผ๋ฆฌ๋ฅผ ํต์นญํ์ฌ ์๋ธ์ฟผ๋ฆฌ) => ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์๊ฐํ๋ฉด์ ์ฌ์ฉํด์ผ ํ๋ค.
join์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ๋ฐฉ๋ฒ
select la.lano, l.titl, m.name, s.work, la.rdt, r.name, m2.name, mr.posi
from lect_appl la
inner join memb m on la.mno=m.mno
inner join stnt s on la.mno=s.mno
inner join lect l on la.lno=l.lno
left outer join room r on l.rno=r.rno
left outer join memb m2 on l.mno=m2.mno
left outer join mgr mr on l.mno=mr.mno;
select ์ ์ ์๋ธ์ฟผ๋ฆฌ ์ฌ์ฉํ๊ธฐ
1๋จ๊ณ: ์๊ฐ์ ์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅ
select
la.lano,
la.lno,
la.mno,
date_format(la.rdt, '%Y-%m-%d') reg_dt
from lect_appl la;
2๋จ๊ณ : ์๋ธ ์ฟผ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ๊ฐ์๋ช ์ ๊ฐ์ ธ์ค๊ธฐ
select
la.lano,
(select titl from lect where lno=la.lno) as lect_title,
la.mno,
la.rdt
from lect_appl la;
3๋จ๊ณ : ์๋ธ ์ฟผ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ํ์๋ช ์ ๊ฐ์ ธ์ค๊ธฐ
select
la.lano,
(select titl from lect where lno=la.lno) as lect_title,
(select name from memb where mno=la.mno) as stud_name,
la.rdt
from lect_appl la;
from ์ ์ ์๋ธ์ฟผ๋ฆฌ ์ฌ์ฉํ๊ธฐ
0๋จ๊ณ : ๊ฐ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค.
select l.lno, l.titl, l.rno, l.mno from lect l;
1๋จ๊ณ : ๊ฐ์ ์์ธ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ select๋ฅผ ์ค๋นํ๋ค. => ์๋ธ ์ฟผ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ๊ฐ์์ค ์ด๋ฆ๊ณผ ๋งค๋์ ์ด๋ฆ, ์ง์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ธฐ
select
l.lno,
l.titl,
(select name from room where rno=l.rno) as room_name,
(select name from memb where mno=l.mno) as manager_name,
(select posi from mgr where mno=l.mno) as manager_posi
from lect l
2๋จ๊ณ: ์์์ ์ค๋นํ select ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ํ ์ด๋ธ๋ก ์ฌ์ฉํ์ฌ ๊ธฐ์กด์ lect_appl ํ ์ด๋ธ๊ณผ ์กฐ์ธํ๋ค
select
la.lano,
/*(select titl from lect where lno=la.lno) as lect_title,*/
(select name from memb where mno=la.mno) as stud_name,
lec.titl,
lec.room_name,
lec.manager_name,
lec.manager_posi
from lect_appl la
join (select
l.lno,
l.titl,
(select name from room where rno=l.rno) as room_name,
(select name from memb where mno=l.mno) as manager_name,
(select posi from mgr where mno=l.mno) as manager_posi
from lect l) as lec on la.lno=lec.lno;
from ์ ์์ ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉํ๋ ์๋ธ ์ฟผ๋ฆฌ๊ฐ ์๋ค๋ฉด, ๊ฐ์ ํ ์ด๋ธ์ธ view๋ก ์ ์ํด๋๊ณ ์ฌ์ฉํ๋ ๊ฒ์ด ํธํ๋ค.
create view lect2 as
select
l.lno,
l.titl,
(select name from room where rno=l.rno) as room_name,
l.mno as manager_no,
(select name from memb where mno=l.mno) as manager_name,
(select posi from mgr where mno=l.mno) as manager_posi
from lect l;
์์ ์ง์๋ฌธ์ view๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ ์์ฑํด๋ณด์!
select
la.lano,
(select titl from lect where lno=la.lno) as lect_title,
(select name from memb where mno=la.mno) as stud_name,
lec.titl,
lec.room_name,
lec.manager_name,
lec.manager_posi
from lect_appl la
join lect2 lec on la.lno=lec.lno;
where ์ ์ ์๋ธ์ฟผ๋ฆฌ ์ฌ์ฉํ๊ธฐ
๊ณผ์ฅ ๋๋ ๋๋ฆฌ ๋งค๋์ ๊ฐ ๋ด๋นํ๊ณ ์๋ ์๊ฐ ์ ์ฒญ๋ง ์ถ์ถํ๊ธฐ
select
la.lano,
/* (select titl from lect where lno=la.lno) as lect_title, */
(select name from memb where mno=la.mno) as stud_name,
lec.titl,
lec.room_name,
/* lec.manager_no, */
lec.manager_name,
lec.manager_posi
from lect_appl la
join lect2 as lec on la.lno=lec.lno
where
lec.manager_no in (select mno from mgr where posi in ('๊ณผ์ฅ', '์ฃผ์'));
Last updated
Was this helpful?