뷰 조합할때, 중복되는 내용이 너무 많습니다. 0 4 1,820

by 제리공주 [SQL Query] [2012.01.25 15:42:11]


Oracle ERP 개발중입니다. 단어사용이 맞는지 모르겠습니다^^;
단위프롬별 VIEW를 생성하고 소계, 합계 혹은 다른 자료를 빼기 위해
단위프롬별 VIEW를 조합해서 만들고 있습니다

제리가  주문한  사과가 10개 오렌지 20개

제리가 주문한 사과를 얻는 VIEW

CREATE VIEW FR_APPLE_V AS
SELECT ORDER, FR_NM, COUNT(1) CNT
   FROM FRUIT
 WHERE ORDER ='제리'
   AND FR_NM = '사과'
;

제리가 주문한 오렌지를 얻는 VIEW

CREATE VIEW FR_ORANGE_V AS
SELECT FR_NM, COUNT(1) CNT
   FROM FRUIT
 WHERE ORDER ='제리'
   AND FR_NM = '오렌지'
;

제리가 갖고 잇는 사과와 오렌지의 합

SELECT A.ORDER, A.CNT+B.CNT CNT
   FROM FR_APPLE_V A,
  FR_ORANGE_V B
 WHERE A.ORDER = B.ORDER
;

이렇게 사용을 하고 있는게 이게 맞는 방법인지 모르겠습니다.
사과 뷰와 오렌지뷰를 모두 풀고 해야하네요-_-z....속도가 느려요...

뷰를 이용하는 이유는, 사과나 오렌지를 가져오는 방법의 조건이 변경될수 있기 때문에
한 뷰만 수정되면 그 방법이 적용될수 있도록 하기 위해.... 그런건데 맞는지 모르겠습니다.

by 제리공주 [2012.01.25 16:00:08]
문제는 소계의 뷰를 몇번이고 조합해서 또 다른 자료를 만들어내야되요 ㅠ 방법좀 알려주시면 감사하겠습니다..

by 손님1 [2012.01.25 16:36:47]
아래와 같이 view를 사용하지 않고 하면 어떤가요?

SELECT ORDER, COUNT(*) cnt
FROM FRUIT
WHERE ORDER ='제리'
AND FR_NM IN ('사과','오렌지');

by 마농 [2012.01.25 16:57:15]
단위프롬이라고 하는 구분 컬럼을 하나 만들어 사용하시면 편하실듯 합니다.
제리의 사과는 01 그룹, 제리의 오렌지는 02 그룹으로 해서 저장해 두시면
조회시에 구분컬럼을 조건으로 해서 조회가 가능하겠지요.
그룹의 조건이 변경된다면 그에 맞게 해당 값을 업데이트 해주면 되겠지요.
SELECT * FROM fruit WHERE gubun = '01';
SELECT * FROM fruit WHERE gubun = '02';
SELECT * FROM fruit WHERE gubun IN ('01','02');

by 제리공주 [2012.01.25 18:06:45]
-손님1님 덧글 감사합니다.

사실 말씀하신 방법이 제일 좋은데, 상사는 옵션?모듈??ㅋㅋㅋ 뷰하나만 수정하면
해당 내용이 변경되어 적용하도록 만들라고 하셔서요

사과에 대한 조건이 색깔이 초록색사과로 변경되거나,
사과와 오렌지를 가져오는 뷰가 다른 뷰로도 이어지기 때문에 만약 조건이변경되면
다른 뷰들도 쫘라락 수정이 필요해서요.............아하하... 모르겟네요..뭐가방법인지...
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입