2012-03-27 7 views
-2

サブクエリでmysqlの行を参照することはできますか?はmysql参照自体の行にできますか?

test_table 
id | field 1 | field 2 | field 3 
1 | 25  | 10 | average of field 1 and 2 

第3列の参照自体は可能ですか?

ありがとうございました。

+2

フィールド3を計算できる場合、そのフィールドはデータベースに存在してはいけません。あなたはselect文でfield3を計算することができます。 –

+0

これは私の最初の質問ですか?平均化したい場合は、挿入する前に平均化したり、Select文に2つの平均である追加の列を戻したりしてください。 – em3ricasforsale

+0

私は、列3の構造がフィールド1と2の入力時にそれを計算するselect文であるかのように自動的に発生したいですか? – Moshe

答えて

1

行3は、任意の時点で列1と2の平均値に等しく設定できますが、その値はその時点の列の値に対してのみtrueになります。

異なる列を変更したときに列を自動的に更新するExcelスタイルのフィールドを探している場合は、1番目または2番目の列が更新されたときに3番目の列を更新するtriggerを使用します。 。あなたは価値があなたのselect文で返されるしたい場合には

+0

フィールドを計算できる場合は、データベースに格納しないでください。基本DBルール。 –

+1

私は同意しますが、それはすでに質問者には明らかになっています。たとえベストプラクティスに従わなくても、何かをする方法を誰かに説明することは、まだ有用だと思います。 –

+4

@FrancisP StackOverflowのスキーマが、他の列から計算できる列を格納していることに興味があるかもしれません。それは選択的非正規化として知られており、パフォーマンスチューニングのために受け入れられている方法です。 –

1

、この使用:小数に合計を鋳造

SELECT id, field1, field2, (CAST((field1 + field2) as DECIMAL)/2) AS 'field 3' 
FROM tablename 

はあなたの平均精度を失うことなくなります。

+0

テーブルを作成したり、テーブルを変更したりするときに、これを行うためにとにかくありますか? – Moshe

+0

私はそうは思わない。最も一般的な方法は、Bobby Wの言及のようなトリガーを使用することです。 –

0

このような単純な計算ではなく、代わりにphp関数で参照されるのではないでしょうか?それをデータベースに格納することは、スペースの不必要な使用です。

+0

データベース上の領域に対してImが邪魔されない – Moshe

関連する問題