2011-07-28 8 views
1

達成したいこと:
私は個々のIDのIDとクレジットを示すテーブルを持っています。
私は、合計が
すべてのIDの上に、私はかなり頻繁にテーブルを更新し、(sigmaID例えば)別の列を作成し、テーブルにこの合計を格納することにより、便利なsum(Credit(ID))を維持したいされているrate(ID)=Credit(ID)/sum(Credit(ID))、各IDを評価したいです、 は、すべての行に対して常に同じ値を持つ必要があります。
私が(たとえば100を追加)IDのためのクレジットを変更するたびに、私は単純に、この列の値に同じ操作を行うことができます(100を追加)sqlすべての行に対して同じ列の値を返し、頻繁に更新します

  • 私はすべての行のsigmaIDを更新する必要がありますか?それは効率的でしょうか?
  • sigmaIDが一貫性のために確かにsum(Credit(ID))であるかどうかを定期的にチェックしたいと思いますが、それを徹底していますか?それは非効率的でしょうか?
  • 他の方法がありますか(私は効率について懸念しています)?

私はに必要と親切に純粋なSQLクエリを提供は、この格付け(およびIDの他のパラメータを持つ他の式の負荷)を計算しますUPDATEトリガーにこのすべてを置きます。スクリプト言語(PHP/python)にアクセスできるかもしれませんが、わかりません。したがって、純粋なSQL要求です。

+0

私の経験では、私は権威をもって話すことはできませんが、あなたが(HTTPをスカラー[機能]を使って、あなたの目標を達成できると思わ:// msdn.microsoft.com/en-us/library/ms189593.aspx)を使用して、合計を計算し、永続化された[計算列](http://msdn.microsoft.com/en-us/library/ms191250.aspx)を使用して、に結果。 –

+0

@ andriy-m:リンクのおかげで、計算されたカラムの内容は有望に見えますが、MSSQLのみに制限されているのですか?それともmysql /他のsqlでも使えますか? – Sudhi

+0

この機能がSQL Serverのみに制限されているかどうかは言えませんが、[このソース](http://www.postgresonline.com/journal/archives/51-Cross-Compare-of-SQL-Server,-MySQL、 PostgreSQL.html)は、少なくとも2つの特定のサーバ製品であるMySQLとPostgreSQLは、計算カラムをサポートしていないことを示しています。 –

答えて

0

残念ながら私の英語は非常に貧しいです。

私が気づいたように、過去と現在のカラム値に関するすべての情報を得たいと思っていますか?

ログに記録しますか?もしそうなら、あなたはジャーナルテーブルを作成し、トリガーによってそれに必要なものすべてをログすることができます。

よろしく、

tatoのmumladze

+0

いいえ、私は列クレジットのすべての値を追加し、任意の行のクレジット値が変更されるたびにこの値を更新します。 – Sudhi

+0

uはそうすることができるよりも、OK: – Tvitmsvleli

+0

OK、uはそうすることができるより: 'コード' [yourcollumn]の更新後トリガー[yourtrigger] を作成するか、または置き換える[yourtable]各行の に を開始更新[yourtable] [yourcollumn] = [yourvalue] ここで[yourcollumn] = [whatyouwant]; end [yourtrigger]; – Tvitmsvleli

関連する問題