[Oracle 기초] INSERT 에서 서브쿼리 사용하기
오늘은 INSERT에서 Subquery를 사용하는 법에 대해 정리 해보도록 하겠습니다.
작업을 위해 아래와 같은 테이블을 만들어 주도록 하겠습니다. 관계가 있는 테이블은 굳이 만들 필요는 없을 것 같습니다.
1 2 3 4 5 6 7 8 9 10 11 | CREATE TABLE BUY_HIS ( HIS_NUMBER NUMBER(10) NOT NULL, BUY_TIME DATE NOT NULL, PRODUCT_CODE VARCHAR2(255) NOT NULL, USER_CODE NUMBER(5) NOT NULL, COUNT NUMBER(5) NOT NULL, PRICE NUMBER(15) NOT NULL, CONSTRAINT INPUT_HIS_PK PRIMARY KEY (HIS_NUMBER), CONSTRAINT INPUT_HIS_FK1 FOREIGN KEY (USER_CODE) REFERENCES USER_TABLE (USER_CODE), CONSTRAINT INPUT_HIS_FK2 FOREIGN KEY (PRODUCT_CODE) REFERENCES PRODUCT_TABLE (PRODUCT_CODE) ); | cs |
제가 원하는 과정은 고객이 구매를 했을 때, 구매 내역을 table에 insert를 하고 싶은데, 이 테이블에는 고객이 구매한 전체 가격이 들어있다는 것 입니다.
이러한 상황에서 어떻게 하는게 좋을까요?
PRODUCT_TABLE의 상품코드 값에 해당하는 PRICE 값을 가져와 상품 개수만큼 곱해준 다음 다시 BUY_HIS에 INSERT 하는 방법?
저는 그런 방법보다는 아예 INSERT 할 때, Subquery를 이용하는 방법을 사용하겠습니다.
1 2 3 | INSERT INTO BUY_HIS(HIS_NUMBER, BUY_TIME, PRODUCT_CODE, USER_CODE, COUNT, PRICE) VALUES(BUY_SEQ.NEXTVAL, SYSDATE, 'P001', 2, 5, (5 * (SELECT PRICE FROM PRODUCT_TABLE WHERE PRODUCT_CODE = 'P001')) ); | cs |
위와 같이 Query를 작성한다면, 해당 코드값만 주어주게 되면 전체 가격을 구할 수 있겠죠?!
깔끔하게 입력되었네요 ㅎ
'Oracle' 카테고리의 다른 글
[Oracle 기초] DECODE 활용하기 (0) | 2018.12.30 |
---|---|
[Oracle 기초] level을 이용한 날짜 및 시간 dummy 테이블 만들기 (0) | 2018.12.30 |
[Oracle 기초] 숫자 자동 증가 (Auto Increment) (0) | 2018.12.24 |
[Oracle 기초] sysdba 비밀번호 분실 (0) | 2018.12.24 |
[Oracle 기초] Oracle Client 제거 (0) | 2018.12.24 |