일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- 자바웹프로그래밍
- 기말고사 #방통대기말고사 #방통대후기 #방통대기말고사후기 #방통대2023년1학기 #방통대1학기 #방통대C프로그래밍 #방통대장학금 #방통대영어회화1
- 갤러리제작 #갤러리만들기 #jsp갤러리 #jsp게시판 #jsp프로그래밍 #jsp웹프로그래밍 #jsp웹 #jsp모델1방식 #사진업로드 #jsp사진업로드 #jdbc6 #jdbc드라이버다운 #jdbc드라이버무료다운
- ORACLE #TIGER #SCOTT #SCOTT계정 #오라클학습계정 #프로그래밍 #SQL #SQLORACLE #오라클 #오라클연습 #오라클연습계정 #오라클연습문제 #WHERE절 #오라클조건절
- QUERY #DML #SQL문 #내림차순정렬 #오름차순정렬
- 8 실무에서 가장 많이 사용하는 SQL
- html #자바와서블릿 #자바와웹연결 #웹연결
- 자바 #웹자바 #JAVA #WEB #WEBJAVA #WEBPROGRAMMING #웹 #웹프로그래밍 #코딩 #CODING #모델1 #모델2 #모델1방식 #모델2방식
- sql #오라클 #불리언형 #boolean #webjava #java #jsp #Mybatis #마이바티스 #마이바티스환경설정 #모델1 #모델1프로그래밍 #Batis #마이바티스다운로드 #web설정 #웹프로그래밍 #게시판 #게시판제작 #게시판만
- Doit #Doit오라클 #Doit시리즈 #연습문제
- jsp #게시판만들기 #자바로게시판만들기 #웹테스트 #JNDI #myora #Oracle #오라클 #DAO #DTO #아파치톰캣 #웹자바셋팅 #모델1 #모델1방식 #모델1방식웹프로그래밍 #웹프로그래밍
- spring #스프링 #전자정부표준프레임워크 #표준프레임워크 #자바스프링 #스프링다운로드 #자바스크립트 #웹프로그래밍설정 #웹프로그래밍셋팅
- Init-param #context-param #
- 마이바티스환경설정
- tern다운로드 #메이븐다운로드 #maven #스프링라이브러리 #자바라이브러리 #톰캣설정 #WAS #웹어플리케이션서버
- 어노테이션 #@WebServlet #WebServlet #
- 서블릿 #자바모델1 #자바모델2 #mvc #mvc패턴
- 방통대 #방송통신대학교 #컴퓨터과학 #컴퓨터과학과 #컴과 #방통대컴퓨터과학과 #방통대컴과 #방통대파이썬 #방통대C #방통대자바
- 자바 #웹자바 #webJava #java #코딩 #코딩초보 #ojdbc #서블릿 #자바서블릿 #javaServelet #servelet #httpServlet
- Model #
- Controller
- View #
- 정처기필기합격 #정처기합격후기
- java #array #자바 #배열 #프로그래밍 #코딩 #자바프로그래밍
- web.xml #배포지시자 #서블릿테스트
- 서블릿선언 #서블릿선언방법 #
- 정처기3회 #정보처리기사2023
- 정처기 #정처기필기 #정보처리기사 #정보처리기사필기 #정보처리기사2023 #정처기2023 #정처기3회 #정보처리기사3회 #정보처리기사실기 #정처기실기 정처기합격
- union #sql99 #외부조인 #오라클조인 #sql조인 #자체조인 #비등가조인 #비등가조인 #테이블복사 #오라클테이블 #null인데이터출력
- cos.jar #cos드라이버 #파일업로드드라이버 #루피는귀여워 #마이바티스 #MyBatis #마이바티스sql #마이바티스DB #마이바티스jsp #마이바티스이클립스 #mapper #config.xml #마이바티스다운로드
- Today
- Total
장미의 개발일기
Do it! 오라클로 배우는 데이터베이스 입문 : 연습문제 8 본문
오라클 학습용 계정 scott으로 접속~~
8 실무에서 가장 많이 사용하는 SQL, 조회
연습문제 page 239
4번문제에 대한 썰이 있다 ㅠㅠ
코드치다보면 자동적으로 알게 되는데,
일단 조인하는 테이블이 총 4개에 비등가조인, 자체조인에
외부조인까지 아주 잡탕으로 다 섞은 문제임;
나름 자신있어서 바로 풀었는데, 아무리 고쳐도 이상하게 출력되었다. 카타시안 곱해서 나온거같이 ㅠㅠ
알고보니 멍청이 같이 테이블 복사를 안해두고 했던것 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
emp 테이블을 복사해두고 시작했어야 했는데 아는데 까먹음...
CREATE TABLE COPY_EMP
AS SELECT*FROM EMP;
이 단 2줄을 안적어서 ㅠㅠ
그리고 아무리 해도 맨 밑의 데이터가 나오지 않는다. 외부조인 제대로 적용했고,
심지어 3번문제가 같은 데이터를 외부조인해서 푸는 건데, 그건 잘 나옴! 대체 뭐지?
다 해놓고 맨 마지막 망할 40번 부서 한줄때문에 1시간은 보낸 듯...
gpt는 오늘도 틀린 답을 말하다가 드디어 바른 코드를 줌 !!
근데 문제가...
학원에서는 sql-99 잘 안쓴다고 (사실 정확히 기억은 안남) 진도를 스킵함
아래 코드를 보면 알겠지만, 이전 방식으로 풀었음 ㅇㅇ
근데 gpt가 준 답은 sql-99 방식임
대체 왜 외부조인, D.DEPTNO = E1.DEPTNO(+) 이게 3번문제에는 작동되고
4번에서 안되서 난리인지 너무 궁금...
내가 쓴 코드:
CREATE TABLE COPY_EMP
AS SELECT*FROM EMP;
SELECT D.DEPTNO, D.DNAME, E1.EMPNO, E1.ENAME,
E1.MGR, E1.SAL,
E1.DEPTNO AS DEPTNO_1,
MIN(S.LOSAL) AS LOSAL,
MAX(S.HISAL) AS HISAL,
S.GRADE,
E2.EMPNO AS MGR_EMPNO,
E2.ENAME AS MGR_ENAME
FROM DEPT D, EMP E1, COPY_EMP E2, SALGRADE S
WHERE D.DEPTNO = E1.DEPTNO(+)
AND E1.MGR= E2.EMPNO(+)
AND E1.SAL BETWEEN S.LOSAL AND S.HISAL
GROUP BY D.DEPTNO, D.DNAME, E1.EMPNO,
E1.ENAME,E1.MGR, E1.SAL,
E1.DEPTNO,S.GRADE,E2.EMPNO,E2.ENAME
ORDER BY D.DEPTNO, E1.EMPNO;
gpt가 준 코드 ( sql-99 )
SELECT D.DEPTNO, D.DNAME, E1.EMPNO, E1.ENAME,
E1.MGR, E1.SAL,
E1.DEPTNO AS DEPTNO_1,
MIN(S.LOSAL) AS LOSAL,
MAX(S.HISAL) AS HISAL,
S.GRADE,
E2.EMPNO AS MGR_EMPNO,
E2.ENAME AS MGR_ENAME
FROM DEPT D
LEFT OUTER JOIN EMP E1 ON D.DEPTNO = E1.DEPTNO
LEFT OUTER JOIN COPY_EMP E2 ON E1.MGR = E2.EMPNO
LEFT OUTER JOIN SALGRADE S ON E1.SAL BETWEEN S.LOSAL AND S.HISAL
GROUP BY D.DEPTNO, D.DNAME, E1.EMPNO,
E1.ENAME,E1.MGR, E1.SAL,
E1.DEPTNO,S.GRADE,E2.EMPNO,E2.ENAME
UNION
SELECT D.DEPTNO, D.DNAME, E1.EMPNO, E1.ENAME,
E1.MGR, E1.SAL,
E1.DEPTNO AS DEPTNO_1,
MIN(S.LOSAL) AS LOSAL,
MAX(S.HISAL) AS HISAL,
S.GRADE,
E2.EMPNO AS MGR_EMPNO,
E2.ENAME AS MGR_ENAME
FROM DEPT D
RIGHT OUTER JOIN EMP E1 ON D.DEPTNO = E1.DEPTNO
LEFT OUTER JOIN COPY_EMP E2 ON E1.MGR = E2.EMPNO
LEFT OUTER JOIN SALGRADE S ON E1.SAL BETWEEN S.LOSAL AND S.HISAL
WHERE E1.DEPTNO IS NULL
GROUP BY D.DEPTNO, D.DNAME, E1.EMPNO,
E1.ENAME,E1.MGR, E1.SAL,
E1.DEPTNO,S.GRADE,E2.EMPNO,E2.ENAME
ORDER BY DEPTNO, EMPNO;
1~3번은 그럭저럭 쉽게 품
--연습문제 239 페이지
--1번
SELECT D.DEPTNO, D.DNAME, E.EMPNO, E.ENAME, E.SAL
FROM DEPT D, EMP E
WHERE D.DEPTNO = E.DEPTNO
AND E.SAL > 2000
ORDER BY D.DEPTNO;
--2번문제
SELECT D.DEPTNO,
D.DNAME,
TRUNC(AVG(NVL(E.SAL,0))) AS AVG_SAL,
MAX(E.SAL) AS MAX_SAL,
MIN(E.SAL) AS MIN_SAL,
COUNT(*) AS CNT
FROM DEPT D, EMP E
WHERE D.DEPTNO = E.DEPTNO
GROUP BY D.DEPTNO, D.DNAME;
--3번문제
SELECT D.DEPTNO,
D.DNAME,
E.EMPNO,
E.ENAME,
E.JOB,
E.SAL
FROM DEPT D, EMP E
WHERE D.DEPTNO=E.DEPTNO(+)
ORDER BY D.DEPTNO, E.ENAME;
'개발일기 > Oracle' 카테고리의 다른 글
Do it! 오라클로 배우는 데이터베이스 입문 : 연습문제 8,9 다시 (0) | 2023.05.13 |
---|---|
Do it! 오라클로 배우는 데이터베이스 입문 : 연습문제 9 (0) | 2023.05.12 |
Do it! 오라클로 배우는 데이터베이스 입문 : 연습문제 7 (0) | 2023.05.10 |
Do it! 오라클로 배우는 데이터베이스 입문 : 연습문제 6 (0) | 2023.05.09 |
JDBC: 자바와 오라클 연결하여, 테이블 생성 및 결과 출력 해보기 (0) | 2023.05.07 |