Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 주식이야기
- 도커
- ajax
- C/C++
- 명사 분석기
- php
- 베트남어
- flex3
- node.js web framework
- 책이야기
- 나의 프로젝트
- 메일왕창보내는법
- iBatis
- Lift
- 명사 추출기
- scala
- Eclipse
- 명사 뽑아내기
- 스킨 스쿠버
- php thumbnail
- ejb
- nodejs express
- Node.js
- rss
- 디즈니씨
- express for node.js
- 나의 취미
- ror실행
- Cross
- docker
Archives
- Today
- Total
nkdk의 세상
오라클 DB 설계 및 활용 6일째 2번째 내용 본문
자 2번째 내용은 3개의 테이블을 이용하여 해보도록 하겠습니다.
-- 세개의 테이블 조인
SELECT SAWON_NAME, BUSER_NAME, GOGEK_NAME FROM SAWON, BUSER, GOGEK WHERE BUSER_NUM = BUSER_NO AND SAWON_NO=GOGEK_DAMSANO;
SELECT SAWON_NAME, BUSER_NAME, GOGEK_NAME FROM SAWON INNER JOIN BUSER ON BUSER_NUM = BUSER_NO INNER JOIN GOGEK ON SAWON_NO=GOGEK_DAMSANO;
두 SELECT는 같은 값을 출력 시킨다.
SELECT SAWON_NAME, BUSER_NAME, GOGEK_NAME FROM SAWON, BUSER, GOGEK WHERE BUSER_NUM = BUSER_NO AND SAWON_NO=GOGEK_DAMSANO(+);
문1) 총무부에서 관리하는 고객 수 출력(고객 30살 이상은 작업에 참여)
SELECT COUNT(GOGEK_NO) FROM SAWON, BUSER, GOGEK WHERE (2007 - ((SUBSTR(GOGEK_JUMIN, 1, 2) + 1900))) > 30 AND BUSER_NAME = '총무부' AND BUSER_NO = BUSER_NUM AND SAWON_NO = GOGEK_DAMSANO;
문2) 부서명별 고객 인원수 (부서가 없으면 '무소속')
SELECT NVL(BUSER_NAME, '무소속'), COUNT(GOGEK_NO)
FROM GOGEK, SAWON, BUSER WHERE BUSER_NO(+) = BUSER_NUM AND SAWON_NO = GOGEK_DAMSANO GROUP BY NVL(BUSER_NAME, '무소속') ;
문3) 고객이 담당 직원의 자료를 보고 싶을 때 고객명을 입력하면
담당직원 자료 출력 : ~ WHERE GOGEK_NAME='강나루'
출력 ==>>
직원명 직급 부서명 부서전화
SELECT SAWON_NAME 직원명, SAWON_JIK 직급, BUSER_NAME 부서명, BUSER_TEL 부서전화 FROM BUSER, SAWON, GOGEK
WHERE BUSER_NO = BUSER_NUM AND SAWON_NO = GOGEK_DAMSANO AND GOGEK_NAME='&NAMES';
문4) 부서와 직원명을 입력하면 관리고객 자료 출력
~ WHERE BUSER_NAME = '영업부'
출력 ===>
고객명 고객전화 성별
강나루 123-4567 남
SELECT GOGEK_NAME 고객명, GOGEK_TEL 고객전화 , CASE SUBSTR(GOGEK_JUMIN, 8,1)
WHEN '1' THEN '남' WHEN '2' THEN '여' WHEN '3' THEN '남' WHEN '4' THEN '여' END 성별 FROM GOGEK, BUSER, SAWON
WHERE BUSER_NO = BUSER_NUM AND SAWON_NO = GOGEK_DAMSANO AND BUSER_NAME = '영업부' ;
정도가 되겠네요. 더 간단한 방법이 있겠죠? 화이팅 오늘은 여기 까지 인것 같네요.
3개 합치는 방법의 포인트는
FROM GOGEK, BUSER, SAWON
WHERE BUSER_NO = BUSER_NUM AND SAWON_NO = GOGEK_DAMSANO
이 정도 이겠네요. ^^ 모두 힘드시죠~ 힘내세요~^^
참고로 직접 해보시는 게 중요합니다. 보고 이해만 한다면 실력 늘지 않습니다.~ 화이팅~~ 조인도 끝이네요~ SELECT 문 2개 정도 더 익히면 끝나겠군요.^^
-- 세개의 테이블 조인
SELECT SAWON_NAME, BUSER_NAME, GOGEK_NAME FROM SAWON, BUSER, GOGEK WHERE BUSER_NUM = BUSER_NO AND SAWON_NO=GOGEK_DAMSANO;
SELECT SAWON_NAME, BUSER_NAME, GOGEK_NAME FROM SAWON INNER JOIN BUSER ON BUSER_NUM = BUSER_NO INNER JOIN GOGEK ON SAWON_NO=GOGEK_DAMSANO;
두 SELECT는 같은 값을 출력 시킨다.
SELECT SAWON_NAME, BUSER_NAME, GOGEK_NAME FROM SAWON, BUSER, GOGEK WHERE BUSER_NUM = BUSER_NO AND SAWON_NO=GOGEK_DAMSANO(+);
문1) 총무부에서 관리하는 고객 수 출력(고객 30살 이상은 작업에 참여)
SELECT COUNT(GOGEK_NO) FROM SAWON, BUSER, GOGEK WHERE (2007 - ((SUBSTR(GOGEK_JUMIN, 1, 2) + 1900))) > 30 AND BUSER_NAME = '총무부' AND BUSER_NO = BUSER_NUM AND SAWON_NO = GOGEK_DAMSANO;
문2) 부서명별 고객 인원수 (부서가 없으면 '무소속')
SELECT NVL(BUSER_NAME, '무소속'), COUNT(GOGEK_NO)
FROM GOGEK, SAWON, BUSER WHERE BUSER_NO(+) = BUSER_NUM AND SAWON_NO = GOGEK_DAMSANO GROUP BY NVL(BUSER_NAME, '무소속') ;
문3) 고객이 담당 직원의 자료를 보고 싶을 때 고객명을 입력하면
담당직원 자료 출력 : ~ WHERE GOGEK_NAME='강나루'
출력 ==>>
직원명 직급 부서명 부서전화
SELECT SAWON_NAME 직원명, SAWON_JIK 직급, BUSER_NAME 부서명, BUSER_TEL 부서전화 FROM BUSER, SAWON, GOGEK
WHERE BUSER_NO = BUSER_NUM AND SAWON_NO = GOGEK_DAMSANO AND GOGEK_NAME='&NAMES';
문4) 부서와 직원명을 입력하면 관리고객 자료 출력
~ WHERE BUSER_NAME = '영업부'
출력 ===>
고객명 고객전화 성별
강나루 123-4567 남
SELECT GOGEK_NAME 고객명, GOGEK_TEL 고객전화 , CASE SUBSTR(GOGEK_JUMIN, 8,1)
WHEN '1' THEN '남' WHEN '2' THEN '여' WHEN '3' THEN '남' WHEN '4' THEN '여' END 성별 FROM GOGEK, BUSER, SAWON
WHERE BUSER_NO = BUSER_NUM AND SAWON_NO = GOGEK_DAMSANO AND BUSER_NAME = '영업부' ;
정도가 되겠네요. 더 간단한 방법이 있겠죠? 화이팅 오늘은 여기 까지 인것 같네요.
3개 합치는 방법의 포인트는
FROM GOGEK, BUSER, SAWON
WHERE BUSER_NO = BUSER_NUM AND SAWON_NO = GOGEK_DAMSANO
이 정도 이겠네요. ^^ 모두 힘드시죠~ 힘내세요~^^
참고로 직접 해보시는 게 중요합니다. 보고 이해만 한다면 실력 늘지 않습니다.~ 화이팅~~ 조인도 끝이네요~ SELECT 문 2개 정도 더 익히면 끝나겠군요.^^