0
열의 값을 계산하고이 값을 테이블로 업데이트하는 쿼리를 만듭니다. 이 열은 CAR_PRICE
입니다. 내가 만든 쿼리는 모든 값을 업데이트하지만이 열의 모든 값은 동일하게됩니다. 그러나, 내 목표는 각 특정 행에 대한 값을 계산하는 것입니다.특정 행의 값을 변경하는 쿼리 업데이트
UPDATE CAR_PAYMENT_TBL
SET CAR_PRICE =
(SELECT
(R.END_DATE-R.START_DATE)*5 AS CAR_PRICE
FROM CAR_TBL C
LEFT JOIN
ROOM_TBL R
ON C.BOOKING_ID = R.BOOKING_ID
WHERE C.TICKET_NO = '&TICKET_NO');
어쨌든 값을 계산하고 CAR_PAYMENT_TBL
의 각 행에 대해 다른 CAR_PRICE
를 업데이트하려면이 쿼리를 개정 있습니까?
테이블 : 테이블을 수행하고 데이터 모양을
CREATE TABLE CAR_PAYMENT_TBL
(
TICKET_NO INT NOT NULL PRIMARY KEY,
CAR_PRICE NUMERIC(5,2)
);
CREATE TABLE ROOM_TBL
(
STAY_NO INT NOT NULL PRIMARY KEY,
ROOM_NO VARCHAR2(4) NOT NULL references ROOM_DETAILS_TBL(ROOM_NO),
START_DATE DATE NOT NULL,
END_DATE DATE NOT NULL,
BOOKING_ID INT NOT NULL references BOOKING_TBL(BOOKING_ID)
);
CREATE TABLE CAR_TBL
(
REG_ID VARCHAR2(7) NOT NULL PRIMARY KEY,
TICKET_NO INT NOT NULL references CAR_PAYMENT_TBL(TICKET_NO),
BOOKING_ID INT NOT NULL references BOOKING_TBL(BOOKING_ID)
);
. 나는'CAR_PIDMENT'와'CAR_TBL' 모두에'CAR_ID'가 있다고 생각합니다.'CAR_TBL'에서 어떤 행을 사용할 지 결정할 수 있습니다. 그래도 게시 된 쿼리가 작동하면 서브 쿼리가 정확히 1 행을 반환 함을 의미합니다. 당신의 의도는'c.ticket_no' 술어를 없애고 대신'CAR_PAYMENT'의'CAR_ID'를 기반으로 사용할 차를 결정할 것입니까? 이는'CAR_ID'와'TICKET_NO' 모두가'CAR_TBL'에서 유일한 키임을 의미합니까? –
@JustinCave 내 게시물을 편집하고 테이블 스키마를 추가했습니다. 내가 제공 한 스키마를 고려하여 더 많은 정보를 제공 할 수 있습니까? – user1909680
서브 쿼리가'ticket_no'에 대해 정확히 1 행을 반환하도록 보장합니까? –