\
문제 풀기전
실습 데이터 가지고 오기 아래 링크
디폴트 조인 은 inner 조인 실습이다.
여러가지 테이터를 합쳐서 보여주기 위한것이 조인이다
-- inner join =
-- left outer join *=
-- right outer join =*
-- 여러개의 테이블 조인
--select 컬럼명 , .....
--from 테이블이름 별칭 [Inner] join 테이블이름 별칭
--on 별칭.컬럼명 = 별칭.컬럼명 [Inner] join 테이블이름 별칭
--on 별칭.컬럼명 = 별칭.컬럼명 ...
select * from professor; -- profno,deptno
select * from student; --studne,deptno1,profno
select * from department; --deptno,dname
--담당 교수 찾기
select p.deptno, p.name as 담당교수,s.name 학생이름,dname
from professor p inner join department d
on p.deptno = d.deptno inner join student s
on d.deptno = s.deptno1;
이 문제는 3개의 테이블의 값을 조인 시켜 원하는 테이터를 출력하는 문제이다
원하는 테이터는 이렇다.
PROFNO (학과코드) / professor 테이블의 name(담당교수명)/student 테이블의 name(학생명)/department 테이블의 dname (전공학과) 를 알고 싶다. 포인트): 담당교수명
다시 말해 / 학과 코드/ 담당교수명 /학생명/전공학과 순으로 보고 싶은 것 이다.
칼럼이름 중 name이 이름이 중복되서 교수테이블은 p /학생 테이블은 p
deptno 또한 이름이 중복되서 교수테이블은 p /학과 테이블은 d
그럼 먼저 각 테이블에 어떠한 칼럼이 있는지 확인 부터 하자
학과 코드 가 일치는 하는것을 알수 있다
다만 student 테이블은 deptno1 이고 나머지는 deptno 이다
select * from professor; -- profno , deptno
select * from student; -- studno, deptno1, profno
select * from department; -- deptno, dname
위 코드 말 설명
교수(professor) 테이블에 학과(department) 테이블 에 학과코드(deptno) / 학생 테이블에 학과코드(deptno)를 조인 해야한다.
select p.deptno 학과코드, p.name as 담당교수명, s.name 학생명, dname 전공학과
from professor p inner join department d
on p.deptno = d.deptno inner join student s
on d.deptno = s.deptno1;
join 이 이해가 안가면 아래 클릭 다녀오면 이해됨 아
2021.03.24 - [[DB]데이터 베이스] - [DB]Join 데이터베이스 조인 하기 /SQL 문 / inner Join /outer Join/ 개념 설명
[오라클 DB] SubQuery 가장 많이 쓰는 쿼리문(Query) 서브쿼리 (0) | 2021.03.25 |
---|---|
[오라클DB]데이터베이스 SQL 쿼리 Union (0) | 2021.03.24 |
[DB]Join 데이터베이스 조인 하기 /SQL 문 / inner Join /outer Join/ 개념 설명 (0) | 2021.03.24 |
[DB]데이터베이스 오라클 / SQL 함수/ 집계합수/숫자함수/문자열함수/날짜 함수/형변환 함수/ having/sum/avg/group by (0) | 2021.03.24 |
[오라클DB]이해하기 쉬운 자료설명 || 데이터베이스 레코드 삽입/ 수정 / 삭제/sql 명령어 (0) | 2021.03.23 |