- ベストアンサー
PHP+MySQLで計算結果を格納する方法
- PHP+MySQLを使用して計算結果を格納する方法を教えてください。
- 現在、フォームから入力された点数Aと点数Bを使用してポイントを計算し、データベースに格納しています。しかし、ポイント算出式が変更された場合や直接データベースに点数を入力する場合には再計算が必要です。
- Excelでは計算式を変更して全行にペーストするだけで反映されていたので、MySQLで同様の結果を得る方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
はじめまして。 私もExcelからPHP+MySQLへの移動組です。 どちらにも長所がありますよね。 MySQLはExcelのように数式を埋め込んでおけるデータベースではありません。 今現在、fanta350mlさんはフォームに入力された点数A,点数Bを、MySQLにPHPを介してINSERTされているのですね。 それで、ご希望はPHPを介さずに直接データベースの点数を入力する、でいいのかな。 直接データベースに点数A,点数Bを入力するのにはMySQLコマンドまたはMySQL Query Browserなどのツールを使われると予想して回答します。 テーブル名 tableA 点数A pointA 点数B pointB ポイント pointC としますと、 まず、INSERT INTO tableA (pointA,pointB) VALUE (10000,100),(10000,70),(9000,80); のようにMySQLコマンドで点数A,点数Bを入力します。 この段階でポイントカラムは空です。 次に UPDATE tableA SET pointC= ROUND( pointA / 100) + pointB + CASE WHEN pointB >=80 THEN 50 ELSE 0 END; でポイントカラムに計算結果を入れてやるといいのでは。 PHPも使わずにすみます。 ROUND()で四捨五入の処理を追加しています。 CASE WHEN ~以下で点数Bで80点以上取得した際のみボーナスポイント50点を足してやる処理をしています。 変更後は条件に合わせてこの部分を書き換えてやればいいと思います。 点数に一部変更が出ても一行走らせるだけなのでラクです。 PHPでループを組んでもいいかと思ったのですが確かにMySQLのほうが処理は高速ですね。10万件は一瞬で終わります。 これがfanta350mlさんのご希望にそった回答だといいなと思っていますが、的外れならごめんなさい。 補足してくだされば追加で答えます!
補足
すいません、説明足らずでした。入力に関しては ・基本はPHPで入力する。 ・直接データベースに入力することは、稀にある。 一番質問したい部分は ・ポイント計算式に変更が入る(結構入りそう…)ことを想定して、どのような方法で計算するのが良いか? ということでした。 excel関数のように自動で他のカラムから引っ張ったり出来るのだろうか?と思いましたが、流石にそれは難しいようですね。 しかしTarepanda_clubさんのやり方なら、計算に変更が入った場合は、既に入ってるデータはSQLでUPDATEすれば良さそうですね。 ありがとうございます。まずはこの方法で作ってみようと思います。 もし他にも何か良いやり方があればご教示お願いします。