반응형

자기 참조 조인 (self join)
SQL> SELECT 별명1.컬럼1, ... 별명2.컬럼1, ...
 2 FROM 테이블 별명1, 테이블 별명2, ...
 3 WHERE 조인_조건
 4 AND 일반_조건


외부 조인(Outer join)
SQL> SELECT 테이블1.컬럼, ..테이블2.컬럼, ...
 2 FROM 테이블1, 테이블2, ...
 3 WHERE 조인_조건(+)
 4 AND 일반_조건

 

실습
1. 학생 중에 동명이인을 검색한다.
select a.sname, a.syear
from student a, student b
where a.sno != b.sno AND a.sname = b.sname;

2. 전체 교수 명단과 교수가 담당하는 과목의 이름을 학과 순으로 검색한다.
select DISTINCT b.pname, cname, section
from professor b, course c, score d
where b.pno = c.pno AND c.cno = d.cno ORDER BY b.section;
 
3. 이번 학기 등록된 모든 과목과 담당 교수를 학점 순으로 검색한다.
select cname, pname, a.st_num
from course a, professor b
where a.pno = b.pno order by a.st_num;
 
4. 직원 중에 자신의 관리자 보다 급여가 높은 사람의 급여 정보를 관리자 급여 정보와 같이 검색한다. 

select a.eno 사번, a.ename 이름, a.mgr 사수번호, a.sal 급여, b.sal 사수급여
from emp a, emp b
where a.mgr = b.eno AND a.sal > b.sal;

5. 교수의 정보와 교수가 담당하는 과목명을 검색한다. 
select pname 이름, a.pno 교수번호, cname 과목명
from professor a, course b
where a.pno = b.pno;

6. 직원과 사수의 명단을 검색한다. 단 직원 명단은 모든 직원 명단이 출력되어야 한다.
select a.ename 직원이름, a.eno 사번, a.mgr 사수번호, b.ename 사수이름
from emp a, emp b
where a.mgr = b.eno(+);
 
7. 화학과 학생 중에 학점이 동일한 학생을 검색한다.
select DISTINCT a.major, a.syear, a.sname, b.sname, a.avr, b.avr
from student a, student b
where a.sno != b.sno AND a.avr = b.avr AND a.major = '화학';

반응형

+ Recent posts