2012-05-05 10 views
0

私はmysqlクエリで平均の平均を求めようとしています。mysqlまたはavgまたは私はPHPを使うべきですか?

私は12点の基準を持っていると私は列の平均値を得ることができますが、私は平均の平均を見つけることができない、

は12個の基準の合計評価を仕事にしようとしています。

私はこれについていくつかの方法があると思います。

  1. は、合計得点を数票で割ります。問題は各行に12票の可能性があります。
  2. 、値の#で平均合計を分割設定値の私達の#を見つけ、平均合計を取得する私は投票に応じて変更することで、合計を分割しています番号が必要

を設定します。 1つの行に12票を入力することができます。 2人のユーザーが2行で合計18票を入力できました。つまり、1人のユーザーが6票を完了していません。table data 表は投票の対象となる列に短縮されました。私はこれを既に投稿しましたが、再投稿のために申し訳ありませんが、私が大雑把に必要な助けを理解し始めています

+0

テーブルの構造を見せてください。それ以外の場合は手伝いができません。 – vyegorov

+2

** "これはとてもシンプルに聞こえる" **。たぶんそれはあなたには当てはまりますが、ループ外の他の人にとっては、あなたの価値観や達成しようとしていることについての十分な情報は実際には分かりません。 –

+0

申し訳ありませんが、これはほぼ一週間掛かっていますが、これはうまくいきません。 – Renai

答えて

0

まず、ユーザーが投票したかどうかを判断するには、フィールドが投票が追加されるまで。私はNULLを提案します。

次に、ユーザーの平均評価のために別の列をテーブルに追加します。これは、でない行の列を使用して計算され、nullの値です。半擬似コードの例:

// Get users row from database 
// Use a query like: 
// SELECT comfort,service,friendliness,food,drinks,toilet,music FROM myTable WHERE user_id = 123; 
$row = $db->fetchrow($userid); 

// Loop through and find out how many are valid 
// Also add values together 
foreach($row as $col) 
{ 
    if(!is_null($col)) 
    { 
     $numValidColumns++; 
     $totalVote = $totalVote + $col; 
    } 
} 

// Calculate user's average 
$userAvg = $totalVote/$numValidColumns; 

// Add to db for this row in new field you just made 
$db->insert(...); 

このようなものは、ユーザーの平均を計算することができます。彼らが別の投票を加えると、この平均を再計算します。

すべての行をに照会し、のユーザー平均値列の値を加算することです。合計行数で除算して、全体平均に到達します。

あなたのために正しい道がありますように。

+0

ちょうど今読んで、ちょうどこれを働かせようとすると、これはパスであるかのように見えます。 私は2つ以上のテーブルを持っていることを忘れています。 1つのテーブルは「店舗」で、「その他」は「評価」です。私は各ショップが1店舗の合計を持っているので、 'rating_total'カラムを 'shop'テーブルに追加しました。または、 'rating'の各行に合計レーティングを追加する必要があります。値)か、まさにあなたが意味していたものですか?私の理解が不足して申し訳ありません、 – Renai

+0

私はあなたの評価表に各評価の平均を保持する列を追加すると言っていた。次に、それらのすべての平均をその場で作成するか、またはあなたの店のテーブルにそれを保存することができます。 –

+0

少しプロセスについてまだ混乱している、これをやろうとしている、あまりうまく行かない、この小さな宇宙でこの闘争を傾けることはできない – Renai

0

一時テーブルを使って同様のことをしました。最初に各列の平均値を計算し、その後、必要な値を返す一般的な操作や操作を行います。しかし、一時テーブルを削除することを忘れないでください。

関連する問題