DB 숙제를 하다가 1주일을 날려먹었다.

처음은 쉽다.
A테이블에서 칼럼 a와 b를 출력해라
SELECT a, b FROM A

두번째도 쉽다. B테이블에서 a, b, c를 출력하는데 c가 'abc'인 것만 출력해라
SELECT a, b, c FROM B WHERE c='abc'

세번째가 1주일을 말아먹은 그 문제다. C는 A와 B의 관계 테이블인데, C에 관계가 있는 것들만 A와 B에서 찾아서 A의 a칼럼과 B의 a칼럼을 출력해라.
이걸 1개의 Select로 처리하려고 하니 안된다. Join질의는 한번에 2개까지만 받아주고 3개는 못받더라. 그래서 View를 하나 만들었다.
CREATE VIEW D AS SELECT A.a, A.b, C.c FROM A JOIN C ON A.b=C.c
그리고
SELECT A.a, B.b FROM B JOIN D ON B.b=D.b
이렇게 처리했다.

그렇게 했더니 네번째는 좀 쉬웠다. C테이블에 관계가 있는 것들중에 A테이블의 PK별로 B에 있는 c칼럼 항목의 합을 출력해라. 위의 View를 B.c를 포함하도록 조금 고쳐주고
SELECT sum(B.c) FROM A JOIN D ON A.a=C.c GROUP BY A.a

이렇게 했다.

그리고 마지막 문제...완전 막장이다.
C테이블에 관계가 있는 E테이블의 a칼럼이 'abc'이면서 B테이블의 b칼럼이 'def'인 A테이블의 a, b 칼럼과 B테이블의 d칼럼과 E테이블의 b칼럼을 출력해라.

어떻게 해야 하나 고민중이다. View를 하나 더 만들어야 하나...

*숙제라서 표절시비에 휘말리면 안되므로 내용을 전혀 알수 없게 처리했다.

*추가. Instance를 7개 이상(각 테이블에 7건 이상) 입력해야 한다는 조건을 이제 발견했다. 처음부터 다시 해야 한다. -_-;;; 제출에 화면 캡쳐까지 포함이기 때문에 화면 캡쳐를 하려면 처음부터 다시 해야 한다는 뜻. 근데 SQL Plus에선 붙여넣기가 안된다. 교수가 이걸 알고 오라클은 SQL Plus를 쓰라고 시킨 걸까?

*또 추가. 교재에 오타가 너무 많다. 그것도 설명문이 아니라 예제로 나온 명령문에 오타가 많다. 예제 그대로 입력했는데 실행되질 않아서 인터넷을 찾아보니 책이 틀렸더라. 제발...ㅜ_ㅜ
초보자들은 교재 내용, 특히 그중에서도 예제만 믿고 가는데 컴퓨터 교재는 제발 예제에는 오류가 없었으면 좋겠다.
by snowall 2009. 10. 10. 21:56