2013-03-21 102 views
1

我正在嘗試將我的查詢結果添加到現有表的列中。 到目前爲止,下面的查詢會計算出​​並顯示該值。但是,我想將此值添加到car_price列中的CAR_PAYMENT_TBL使用查詢結果的更新表

下面的create table命令顯示了相關的表格以及它們之間的關係。是否有可能更新CAR_PAYMENT_TBL中的​​值?

SELECT C.TICKET_NO, 
      C.REG_ID, 
      C.BOOKING_ID, 
      (R.END_DATE-R.START_DATE) AS DAYS_STAYED, 
      (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; 

表模式:

CREATE TABLE CAR_PAYMENT_TBL 
(
    TICKET_NO INT NOT NULL PRIMARY KEY, 
    CAR_PRICE NUMERIC(5,2) 
); 

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

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) 
); 
+0

請考慮使用該值的CAR_PAYMENT_TBL所有記錄加入寫你的更新(像這樣的子查詢必須只返回一行,因爲你使用&ticket_no這應該是好的,我只是說)。接下來,您需要編寫'SET CAR_PRICE =(SELECT [your earlier statement]);' – Najzero 2013-03-21 11:52:54

+0

room_tbl和car_payment_tbl如何關聯? – 2013-03-21 11:56:51

+0

您缺少一些連接... – haki 2013-03-21 13:06:33

回答

4

,不能引用其他表在甲骨文的UPDATE語句 - 使用子查詢或MERGE語句:

UPDATE CAR_PAYMENT_TBL 
    SET CAR_PRICE = 
    (select (ROOM_TBL.END_DATE - ROOM_TBL.START_DATE)*5 from room_tbl where ...) 
    WHERE CAR_PAYMENT_TBL.TICKET_NO = &TICKET_NO;  

你也得爲子查詢提供合理的WHERE子句(假設& TICKET_NO實際上是一個綁定變量,而不是兩個表的連接條件)。

0

如果要更新基礎上的ROOM_TBL 然後

UPDATE CAR_PAYMENT_TBL 
SET CAR_PRICE = (select (ROOM_TBL.END_DATE – ROOM_TBL.START_DATE)*5 
FROM ROOM_TBL WHERE CAR_PAYMENT_TBL.TICKET_NO = ROOM_TBL.TICKET_NO) 

如果你只想更新的CAR_PAYMENT_TBL特定的記錄,然後

UPDATE CAR_PAYMENT_TBL 
SET CAR_PRICE = (select (ROOM_TBL.END_DATE – ROOM_TBL.START_DATE)*5 
FROM ROOM_TBL WHERE CAR_PAYMENT_TBL.TICKET_NO = ROOM_TBL.TICKET_NO) 
where CAR_PAYMENT_TBL = &ticket_num; 
+0

由於涉及的表之間的關係,這些查詢不起作用。我已經提供了相關表格 – user1909680 2013-03-21 17:23:01

+0

我已經對我的帖子進行了編輯。考慮到架構,是否有其他方式進行此更新? – user1909680 2013-03-21 19:18:01