[Oracle 기초] INSERT 에서 서브쿼리 사용하기

Posted by 열정보이
2018. 12. 24. 23:47 Oracle

오늘은 INSERT에서 Subquery를 사용하는 법에 대해 정리 해보도록 하겠습니다.


작업을 위해 아래와 같은 테이블을 만들어 주도록 하겠습니다. 관계가 있는 테이블은 굳이 만들 필요는 없을 것 같습니다.


1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE BUY_HIS (
HIS_NUMBER NUMBER(10NOT NULL,
BUY_TIME DATE NOT NULL,
PRODUCT_CODE VARCHAR2(255NOT NULL,
USER_CODE NUMBER(5NOT NULL,
COUNT NUMBER(5NOT NULL,
PRICE NUMBER(15NOT 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'25
(5 * (SELECT PRICE FROM PRODUCT_TABLE WHERE PRODUCT_CODE = 'P001'))
);
 
cs

위와 같이 Query를 작성한다면, 해당 코드값만 주어주게 되면 전체 가격을 구할 수 있겠죠?!

깔끔하게 입력되었네요 ㅎ