2016-09-29 40 views
0

因此我在Microsoft SQL Server上的數據庫中有三個表。根據來自其他表的值更新表上的所有行

該系統是一個學習的例子,它包含表A,這是學校有一個ID和花費在購買東西的總金額。

表B包括一個可以用的東西的ID和價格

表C包含所有的訂單,和ORDER_ID,學校ID,stuff_id和金額買東西

我的問題是這樣的,我有創建一個觸發器,當表C中插入一個值時,會更新所有學校花費的總金額。我無法弄清楚如何做到這一點。特別是因爲我必須計算購買的東西的數量。

如果你想看到的SQL像我一樣,你可以在這裏做到這一點:http://sqlfiddle.com/#!6/265f0

+2

創建一個視圖來計算表中的總數,而不是實時值。如果您希望用於報告目的,則可以每天晚上在計劃作業中更新表格中的總計。 –

+0

難道你不想讓觸發器處理INSERT(新訂單),UPDATE(更改訂單)和DELETE(刪除訂單)嗎?您是否想過如何處理價格變化,例如學校下訂單,價格變動,然後學校更改訂購的數量?或者您寧願防止對錶格進行直接更改並強制用戶通過也執行完整性檢查的存儲過程,例如訂購數量大於零?如果你使用觸發器,請記住它們每個語句觸發一次,但是一個語句可能會影響多行。 – HABO

回答

1

希望查詢是這樣的:

select c.school_id, sum(b.price) 
from b join 
    c 
    on b.stuff_id = b.stuff_id 
group by c.school_id; 

可以使用觸發器。但是這會變得更加複雜,因爲您必須處理已刪除和更新的記錄以及插入它們。

+0

謝謝,我設法解決這個問題 – Krysvac

相關問題