2011-07-26 16 views
1

わかりましたので、私は次の行を持つデータベース、質問のためにどのような利用者の評価が含まれています(その評価スクリプト - これはQ20にすべて完成し、Q1のすべての方法です)があります。mysqlクエリ&PHP - これを行う方法?

id 
sid 
q1 
q2 
q3 
q4 
q5 
... 
q19 
q20 

をテーブルのイメージ:http://i.stack.imgur.com/SM70j.jpg

ここでは、例えば、行Aである:ここ

id 1 
sid 2447 
q1 1.5 
q2 2.5 
q3 0.5 
q4 4.5 
q5 3.5 
... 
q19 2.0 
q20 2.0 

は、例えば、行Bである:

id 2 
sid 2447 
q1 2.5 
q2 1.5 
q3 1.5 
q4 3.5 
q5 4.5 
... 
q19 1.0 
q20 1.0 

基本的に、私は次の処理を行い、問合せをしたい:

それはsidによってデータやグループ、それをカウントし、私はQ20行にQ1のすべてをしたいが加算:

をので、Q1ますbe 4、q2は4、q3は2となります。

次に、これらの行の数を分けたいので、q1は2になり、q2は2になり、q3は1になります。 (平均数を得るため)。

我々はそう例えば、上でこの情報を表示するページがあります。宿泊のための

平均評価= row1['q1'] + row2['q1']/amt of rows

風景の平均評価= = row1['q3'] + row2['q3']/amt of rows

食品用 row1['q2'] + row2['q2']/amt of rows

平均評価

私は人々が評価する20の質問を持っていますが、これはすべてコード化されており、データはすべて保存されています。

これはページ上のデータを表示するためのものです。私は現在、それは私がちょうどtotal of q1 where sid = X, divided by the amt of rows for the average ratingをつかむためにMySQLのクエリをやって助けが必要

Avg rating for Accommodation 

Avg rating for Scenery 

Avg rating for Food 

のように定めています。

は、私はその後、たとえば、変数にこれらを渡したい:

$r['question1'] = ...; 

をだからあなたは愚かであるかのように私はそれを説明している場合、我々は単に

echo "Avg rating for Accommodation = " . $r['question1']; 

申し訳行うことができますが、私は」私はそれが欲しいと私はできるようにできるように明確にしようとするので、私はこれを達成するための助けを得ることができます。

ご協力いただければ幸いです。その上

SELECT AVG(q1) as accommodation, AVG(q2) as scenery, AVG(q3) as food FROM my_table GROUP BY sid 

と:あなたはMYSQLでこれを行うことができsid上の行の平均値、グループを取得し、AVG機能

SELECT sid,AVG(q1) AS q1,AVG(q2) AS q2,[...] FROM <RATING_TABLE> GROUP BY sid 
+0

例:ユーザー1とユーザー2を意味するので、それぞれ質問2:4と5をそれぞれ投票してください。だから、数学は合計得点/評価数=平均です。エコーその質問の平均スコア? – 422

答えて