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_PRICE各行ごとに異なる値を更新する方法はありCAR_PAYMENT_TBLますか?

表:

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)
);
4

1 に答える 1

2
UPDATE CAR_PAYMENT_TBL T
    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 = T.TICKET_NO
    )
    WHERE T.TICKET_NO = '&TICKET_NO';
于 2013-03-21T20:29:54.783 に答える