/* FROM 조인 , ANSI 조인 복습 */
/*
1. 직원 테이블과 직원연락처 테이블을 [직원ID] 로 조인하여 아래와 같은 결과를 출력하세요.
직원ID 이름 연봉 휴대폰 (이건 AS 로 이름 바꾼것)
A0001 김철수 2800 010-1231-1234
A0002 강홍수 3000 010-2544-6342
A0003 이현정 2600 010-7766-5231
A0004 김선미 4500 010-4433-5522
A0005 문현철 5000 010-9988-7273
A0006 송대주 7500 010-8373-5511
A0007 메이슨 6200 010-2323-1133
A0008 송진아 7500 010-8877-0087
*/
SELECT * FROM 직원;
SELECT * FROM 직원연락처;
SELECT A.직원ID
, A.이름
, A.연봉
, B.연락처 AS 휴대폰
FROM 직원 A INNER JOIN 직원연락처 B
ON (A.직원ID = B.직원ID)
WHERE B.구분코드 = '휴대폰';
SELECT A.직원ID
, A.이름
, A.연봉
, B.연락처 AS 휴대폰
FROM 직원 A
, 직원연락처 B
WHERE A.직원ID = B.직원ID
AND B.구분코드 = '휴대폰';
/*
2. 직원 중에서 연락처 정보가 없는 직원들의 정보만 출력해주세요.
<출력 결과>
직원ID 이름 나이 연봉
A0010 김홍민 52 9300
A0009 이서연 50 9000
*/
SELECT A.직원ID
, A.이름
, A.나이
, A.연봉
FROM 직원 A LEFT OUTER JOIN 직원연락처 B
ON (A.직원ID = B.직원ID)
WHERE B.연락처 IS NULL;
SELECT A.직원ID
, A.이름
, A.나이
, A.연봉
FROM 직원 A
, 직원연락처 B
WHERE A.직원ID = B.직원ID(+)
AND B.연락처 IS NULL;
--연락처를 등록하지 않은 고객들
--직원테이블에는 있는데, 직원연락처 테이블에는 없던 고객
/*3. 아래 쿼리를 ANSI 문법으로 변경하세요.
SELECT A.직원ID , A.이름 , A.나이 , A.연봉 , B.연락처
FROM 직원 A
, 직원연락처 B
WHERE A.직원ID = B.직원ID(+)
AND A.직원ID IN ('A0005' , 'A0006' , 'A0007' ) ;
*/
SELECT A.직원ID
, A.이름
, A.나이
, A.연봉
, B.연락처
FROM 직원 A LEFT OUTER JOIN 직원연락처 B
ON (A.직원ID = B.직원ID)
WHERE A.직원ID IN ('A0005', 'A0006', 'A0007');
------------------------------------------------------
-- 1번 답
SELECT A.직원ID , A.이름 , A.연봉 , B.연락처 AS 휴대폰
FROM 직원 A
, 직원연락처 B
WHERE A.직원ID = B.직원ID
AND B.구분코드 = '휴대폰';
--2번 답
SELECT A.직원ID , A.이름 , A.나이 , A.연봉
FROM 직원 A
, 직원연락처 B
WHERE A.직원ID = B.직원ID(+)
AND B.직원ID IS NULL ;
--3번 답
SELECT A.직원ID , A.이름 , A.나이 , A.연봉 , B.연락처
FROM 직원 A LEFT OUTER JOIN 직원연락처 B
ON ( A.직원ID = B.직원ID )
WHERE A.직원ID IN ('A0005' , 'A0006' , 'A0007' ) ;
댓글