我創建一個包含四個不同表的數據庫:Oracle事務更新量從一個表到另一個
CUSTOMER (PK CUST_ID, CUST_NAME, CUST_ADDRESS)
INVOICE (PK INVOICE_ID, FK CUST_ID, INVOICE_AMOUNT)
PRODUCT (PK PRODUCT_ID, PRODUCT_NAME, PRODUCT_COST)
INVOICE_ITEM (PK FK INVOICE_ID, PK FK PRODUCT_ID,
INVOICE_ITEM_QUANTITY, INVOICE_ITEM_PRICE)
我需要建立一個交易:1)。將數據插入新的CUSTOMER
,2)。將數據插入新的INVOICE
(發票金額設爲0),3)。插入兩個新的INVOICE_ITEM
的數據(一行有INVOICE_ITEM_QUANTITY
設爲2,INVOICE_ITEM_PRICE
爲5.00,另一行爲1和10.00)。
我能做到這一切,而不使用INSERT命令的任何問題,但下一步是絆倒了我,讓
「更新INVOICE_AMOUNT添加在步驟3到INVOICE_ITEM_PRICE場添加的行項目。您必須使用可以工作的查詢來執行此操作,而不管此INVOICE中是否存在INVOICE_ITEM行。您的查詢無法硬編碼金額。'
我無法弄清楚我會如何去做這件事。我一直在研究解決方案,但沒有發現任何描述這個問題的東西,只有那些在列名相同的情況下才有效。
我可以直接將值插入到INVOICE_AMOUNT
,但這會被認爲是硬編碼的答案,對嗎?所以我一直試圖做一些沿線的
UPDATE INVOICE
SET INVOICE_ITEM.INVOICE_ITEM_PRICE = INVOICE.INVOICE_AMOUNT
WHERE INVOICE.INVOICE_ID = INVOICE_ITEM.INVOICE_ID
但我不能得到這個代碼的任何變化工作。我確信有一些非常簡單的答案,會讓我感到很蠢,但如果有人能夠幫助,我會非常感激。
對我來說,INVOICE_AMOUNT應該是'總和(invoice_Item.Invoice_Item_Price * Invoice_Item_Quantity)'所以你需要獲得和確保它不是空(或者其無效,至少使其0) – xQbert
我也知道這一點,但在我的任務中注意到:您是否應該有一個INVOICE_AMOUNT字段值得懷疑,因爲您始終可以查詢INVOICE_ITEM表併爲每個發票項目總結INVOICE_ITEM_QTY * INVOICE_ITEM_PRICE。但是,對於這項任務,我們假設我們想要這樣做。 – CBevs
相似問題:http://stackoverflow.com/questions/2446764/update-statement-with-inner-join-on-oracle – xQbert