2011-07-28 42 views
1

我想實現的目標:
我有一張表格,表示每個ID的ID和Credits。
我想爲每個ID爲,rate(ID)=Credit(ID)/sum(Credit(ID))總和超過所有ID
我會相當頻繁更新的表,並希望通過創建另一列,並在表中存儲此總和保持sum(Credit(ID))方便(比如sigmaID)其中對於所有行應始終具有完全相同的值。
每當我改變信用爲ID(比如加100),我可以簡單地做此列的值相同的操作(加100)sql所有行的列值相同,並且頻繁更新

  • 我必須更新sigmaID所有行?它會有效嗎?
  • 我想定期檢查一下,如果sigmaID的確是sum(Credit(ID))的一致性,我是否過度使用它?它效率低下嗎?
  • 有沒有其他方法(我擔心效率)?

請提供純SQL查詢,因爲我需要把所有這一切都在UPDATE觸發這將計算該等級(以及ID的其他參數其他公式的負荷)。我可能有權訪問腳本語言(PHP/python),但我不確定。因此,純粹的SQL請求。

+0

我的經驗並不讓我有權力說話,但它很可能是,你可以通過使用標[功能](HTTP實現你的目標:// msdn.microsoft.com/en-us/library/ms189593.aspx)來計算總和和持久[計算列](http://msdn.microsoft.com/zh-cn/library/ms191250.aspx)以分配結果。 –

+0

@ andriy-m:感謝您的鏈接,計算列的東西看起來很有前途,它僅限於MSSQL,還是我可以在mysql/other sql中使用它? – Sudhi

+0

無法說明該功能是否僅限於SQL Server,但[本源文件](http://www.postgresonline.com/journal/archives/51-Cross-Compare-of-SQL-Server,-MySQL, -and-PostgreSQL.html)顯示,至少有兩個特定的服務器產品MySQL和PostgreSQL *不支持計算列(或者,當時並不支持)。 –

回答

0

不幸的是我的英語非常差。

正如我意識到的那樣,您想要了解過去和現在的列值的所有信息?

你想登錄嗎?如果是這樣,你可以製作日記表並記錄所有你想要的內容。

最好的問候,

TATO mumladze

+0

不,我想要添加列貸方的所有值,並且每次更改任何行的貸項值時更新此值。 – Sudhi

+0

OK,不是U可以這樣做: – Tvitmsvleli

+0

OK,不是U可以這樣做: '代碼' 創建或[yourcollumn]更新後更換觸發器[yourtrigger] 上[yourtable] 每一行 開始 更新[yourtable] set [yourcollumn] = [yourvalue] 其中[yourcollumn] = [whatyouwant]; end [yourtrigger]; – Tvitmsvleli