조인연습
select * from dept;
select * from member;
SELECT dept.dept_name,member.name
FROM DEPT,MEMBER
where dept.dept_id=member.dept_id;
select t.dept_name ,s.name
from member s, dept t
where s.dept_id=t.dept_id;
--ansi
select t.dept_name ,s.name
from member s inner join dept t
on s.dept_id=t.dept_id;
--outer join
select s.dept_name,t.name
from dept s left outer join member t
on s.dept_id=t.dept_id;
--right outer join
select s.dept_name,t.name
from dept s right outer join member t
on s.dept_id=t.dept_id;
--right outer join
select s.dept_name,t.name
from dept s , member t
where s.dept_id=t.dept_id(+);
--부서가 총무부인 사원의 이름을 출력하세요
select t.name from dept s, member t
where s.dept_id=t.dept_id
and s.dept_name='총무부';
--self join
select s.name,t.name
from member s, member t
where s.member_id=t.mgr;
select s.name,t.name
from member s left outer join member t
on s.member_id=t.mgr;
select * from dept;
select * from member;
--7. 영업부 부서에서 근무하는 모든 직원의 이름, 직위, 부서번호, 부서이름을 표시 하십시오.
select m.name, m.jikwi,m.dept_id,d.dept_name
from dept d, member m
where d.dept_id=m.dept_id
and d.dept_name='영업부';
--8. 직원의 이름, 사번, 관리자 이름, 사번을 표시 하십시오.
select w.name,w.member_id,m.name ,m.member_id
from member w, member m
where w.mgr =m.member_id;
--9. 관리자가 지정되지 않은 직원도 포함하여 직원의 이름, 사번, 관리자 이름, 관리자의 사번을 표시 하십시오.
--(관리자가 지정되지 않은 경우 관리자의 이름과 사번은 ‘없음’으로 표시하세요)
select w.name,w.member_id,
nvl(m.name,'없음'),nvl(to_char(m.member_id),'없음')
from member w, member m
where w.mgr =m.member_id(+);
--10. 관리자 보다 먼저 입사한 모든 직원의 이름, 입사일, 관리자 이름, 관리자 입사일을 표시 하십시오.
select w.name,w.member_id,m.name ,m.member_id, m.hire
from member w, member m
where w.mgr =m.member_id
and w.hire<m.hire;
--11. 보너스를 받는 직원의 이름, 부서 번호, 부서 이름을 표시 하십시오.
select m.name,m.dept_id,d.dept_name
from dept d, member m
where m.dept_id=d.dept_id
and m.bonus is not null;