5

長い質問のタイトルでごめんなさい。

私はこれで敗者になっていると思いますが、チャンスはありません。

テーブル内の計算フィールドの計算を、別のテーブル内のフィールドに適用された集計関数の結果にすることは可能ですか。

すなわち

'mug'というテーブルがあり、これには'color'という子があります(これにより、英国の頭が痛くなりますが、ベンダーは米国からのものです。これから何をしますか?)、これには'という子があります。サイズ'。各テーブルには、soldというフィールドがあります。

size.soldは、販売された特定の色とサイズのマグカップごとに1ずつ増加します。

color.soldをSUMsize.soldの集合体にする必要がありますWHEREsize.colorid= color.colorid

mug.soldをSUMcolor.soldの集合体にする必要がありますWHEREcolor.mugid= mug.mugid

とにかくmug.soldとcolor.soldをうまく機能させる方法はありますか、それともトリガーをいじくり回す必要がありますか?

4

2 に答える 2

7

計算列で別のテーブルを直接参照することはできませんが、ユーザー定義関数を参照することはできます。このようなソリューションを実装する例へのリンクを次に示します。

http://www.sqlservercentral.com/articles/User-Defined+functions/complexcomputedcolumns/2397/

于 2008-10-03T12:23:13.773 に答える
3

いいえ、できません。計算列は、同じ行の他のフィールドの値からのみ派生できます。別のテーブルから集計を計算するには、ビューを作成する必要があります。

アプリケーションで統計を表示する必要がある場合は、次の質問をしてください。

  1. これをリアルタイムで表示する必要はありますか?もしそうなら、なぜですか?これが本当に必要な場合は、トリガーを使用してテーブルを更新する必要があります。 これは、非正規化に関するウィキペディアの短い記事にリンクしています。トリガーは、テーブルの更新時の書き込みパフォーマンスに影響を与え、アクティブなトリガーに依存します。
  2. レポート目的でのみ必要な場合は、ビューまたはレポートで計算を行うことができます。
  3. 頻繁なアドホック レポートをサポートする必要がある場合は、データ マートと夜間 ETL プロセスの領域に入る可能性があります。
于 2008-10-03T12:22:23.027 に答える