0

ここに少し初心者がいます。私は現在、さまざまな車の詳細を一覧表示するMySQLテーブルに取り組んでいます。他の3つのフィールドからの情報で構成された新しいフィールドが必要です。つまり、「Acceleration」、「Speed」、「Braking」があり、これらにはすべて、「Average」と呼びたい別のフィールドに平均化された2桁の整数が含まれています。

ロジックは「加速」+「速度」+「ブレーキ」/3です。

これを行うための正しい構文を理解できないようです。他のクエリに表示するためにこれらの値が必要なので、特にこれをフィールドにする必要があります。SELECTクエリで必要な結果値を取得できることは知っていますが、それらの値をそのテーブルの永続フィールドに適用するにはどうすればよいですか?

これについて助けてくれてありがとう。

4

1 に答える 1

1
  1. まず、テーブル スキーマを変更して新しい列を定義する必要があります。

    ALTER TABLE my_table ADD COLUMN Average FLOAT;
    
  2. 次に、テーブルを更新して値を設定します。

    UPDATE my_table SET Average = (Acceleration + Speed + Braking) / 3;
    
  3. Average新たに挿入・更新されたデータを正しく設定する方法を検討してください。おそらくトリガーを使用します:

    CREATE TRIGGER calc_average_ins AFTER INSERT ON my_table FOR EACH ROW
    SET NEW.Average = (NEW.Acceleration + NEW.Speed + NEW.Braking) / 3;
    
    CREATE TRIGGER calc_average_upd AFTER UPDATE ON my_table FOR EACH ROW
    SET NEW.Average = (NEW.Acceleration + NEW.Speed + NEW.Braking) / 3;
    

代わりに、この列をビューに導入して、必要に応じてオンザフライで平均を作成し、それによって基礎となるデータ値から非同期になるのを防ぐことを検討することをお勧めします (ただし、キャッシュされた値):

CREATE VIEW my_view AS
SELECT *, (Acceleration + Speed + Braking) / 3 AS Average FROM my_table;

最後に、平均は現実の世界では物理的な意味を持たないことに注意してください (その単位は何でしょうか?)。より意味のあるメトリックがニーズにより適している場合とそうでない場合があります。

于 2012-07-24T06:48:15.750 に答える