2013-04-13 172 views
1

我需要創建一個觸發器,它可以將兩個表中的兩個字段相乘,但我不知道如何去做,所以讓我們看看您能否幫助我。從兩個表中觸發乘法運算

兩個表,

產品(PRODUCT_NAME,價格)

訂單(PRODUCT_NAME(外鍵),units_ordered)

我需要添加一個字段的表乘以價格從產品訂單和units_orders從訂單,所以:total_price =價格(從產品)X units_ordered(從訂單)

在此先感謝,併爲我的英語不好。 Regards

+0

你能顯示一些代碼嗎?你是否知道如何編寫觸發器,或者你只是不確定要做這個特定的任務? – siride

+0

你需要觸發器還是視圖?你是否希望在表格順序中有一個字段,當插入一條記錄時會有乘法的結果? – koriander

+0

我已經讀了一些關於觸發器,但不知道如何在這個例子中使用它們,所有的代碼都不是英文的,但這並不重要,唯一重要的表格就是那兩個。 :S – Tennosuke

回答

0

你根本不需要觸發器。而且您也不需要爲總價格添加另一列,因爲它已經是多餘的了。

如果您想要他們的總價格,只需在投放記錄期間進行。例如

SELECT a.Product_Name, 
     a.Price, 
     b.units_ordered, 
     a.Price * b.units_ordered AS TotalPrice 
FROM Products a 
     INNER JOIN Orders b 
      ON a.Product_name = b.Product_name 

,或者你可以創建一個VIEW出你SELECT聲明。例如,

CREATE VIEW ProductOrder 
AS 
SELECT a.Product_Name, 
     a.Price, 
     b.units_ordered, 
     a.Price * b.units_ordered AS TotalPrice 
FROM Products a 
     INNER JOIN Orders b 
      ON a.Product_name = b.Product_name 

,並從視圖中選擇,

SELECT * FROM ProductOrder 

但如果你真的想添加另一列,依舊會觸發不是一個選項。您只需要使用UPDATE更新該列的值並加入兩個表。假設您的新列在表'訂單'上調用TotalPrice

UPDATE Orders a 
     INNER JOIN Products b 
      ON a.Product_name = b.Product_name 
SET  a.TotalPrice = a.units_ordered * b.Price 
+0

感謝您的回答,但這不完全是我所需要的,我需要該字段需要兩個字段的乘數的值,而不是一個視圖:( – Tennosuke

+0

請參閱我的更新答案) –

+0

不錯的一個JW,您真棒,它作品,謝謝 – Tennosuke