SELECT a.empno , b.dname
FROM emp a NATURAL JOIN dept b;
SELECT empno,ename,dname
FROM emp a JOIN dept b
ON a.deptno = b.deptno;
SELECT empno, ename, dname
FROM emp,dept
WHERE emp.deptno = dept.deptno -- 옛날방식
SELECT empno, ename, dname
FROM emp a JOIN dept b
ON a.deptno = b.deptno;
동작원리를 보자.
이렇게 조인된 row가 반환 된다. 그 중에서 empno, ename, dname 출력한 값을 리턴한다.
7782 CLARK ACCOUNTING
7839 KING ACCOUNTING
7934 MILLER ACCOUNTING
7566 JONES RESEARCH
7902 FORD RESEARCH
7876 ADAMS RESEARCH
7369 SMITH RESEARCH
7788 SCOTT RESEARCH
7521 WARD SALES
7844 TURNER SALES
7499 ALLEN SALES
7900 JAMES SALES
7698 BLAKE SALES
7654 MARTIN SALES
14개가 나온다. 즉 deptno = deptno 가 맞는 것만 확인하고 로우값을 리턴하고
리턴된 로우값에서 emp 테이블에서 해당하는 컬럼 반환
다음 예제를 보자.
[답]
SELECT a.emp_id, a.emp_name, a.salary+b.comm
FROM temp a, tcom b
WHERE a.emp_id = b.emp_id
AND b.work_year = '2001';
EMP 테이블과 TCOM 테이블을 먼저 카타시안의 곱을 진행 한 뒤 조인을 where절에서 진행한다.
SELECT
*
FROM temp a, tcom b
카타시안의 곱을 한다면
SELECT
*
FROM temp a, tcom b
WHERE a.emp_id = b.emp_id
이렇게 나오게 된다.즉 a(테이블에 해당하는).emp_id = b(테이블에 해당하는).emp_id가 출력된다. 그 때 SELECT문을 수정하면
SELECT
a.emp_id,a.emp_name,a.salary+b.comm
FROM temp a, tcom b
WHERE a.emp_id = b.emp_id
AND b.work_year = '2001';
최종적으로 이러한 코드가 나오는데,
문제2 : temp와 emp_level을 이용해 emp_level의 과장 직급의 연봉 상한/하한 범위 내에
드는 직원의 사번과, 성명, 직급, salary를 읽어보자.
select a.emp_id, a.emp_name, a.lev, a.salary
from temp a, emp_level e
where a.lev = e.lev and a.salary between e.from_sal and e.to_sal;
emp_level의 과장 직급의 연봉 상한/하한 범위 내 이 말이 키워드이다. emp_level테이블에서 과장 (37000000 75000000) 여기 안에 드는 사람을 TEMP 에서 찾아서 출력하면된다.
두개의 다른 테이블을 이용해서 조회를 해야된다. (조인을) 생각해야된다. 과장 직급의 연봉 상한/하한 범위 내 라는 말이 keyword이다. 그렇게 한다면 한 가지 방법이 있다. NATURAL JOIN을 이용하지 않고 WHERE절에서 조인을 거는 것이다.
WHERE a. salary BETWEEN A(EMP_LEVEL).FROM_SAL AND TO_SAL AND B.LEV = ‘과장’를 하는 것이다.
근데 순서가 이게 맞나? 순서는 확인 해봤는데 바뀌어도 상관없다. and 조건이여서
과장을 먼저 정해주면 그에 따른 row가 반환 되는데 거기 안에 FROM_SAL AND TO_SAL이 있기 때문에 과장 먼저 조인을 걸어줘야한다.
SELECT
qna_title, qna_content, mem_name
FROM qna, member
WHERE QNA.MEM_NO = member.mem_no;
SELECT a.QNA_TITLE, a.QNA_CONTENT, m.MEM_ID, b.QC_CONTENT
FROM QNA a, QNA_COMMENT b, MEMBER m
WHERE a.MEM_NO = m.MEM_NO AND a.QNA_NO = b.QNA_NO;