0

私は MYSQL/PHP の初心者で、これは簡単な質問だと思います。1 つのテーブルからいくつかの質問と回答者の平均を計算し、その値でグループ テーブルを更新しようとしています。

たとえば、テーブルの回答は、テーブル B の (name, group_id, TaskClarity1, TaskClarity2, TaskClarity3) で構成されています (group_id, avg(TaskClarity1,TaskClarity2,TaskClarity3))。

これは私が持っているものです...

$avg_task_clarity_1 = mysql_query("SELECT AVG(TaskClarity1) WHERE gruppid = '$group_id'");
$avg_task_clarity_2 = mysql_query("SELECT AVG(TaskClarity2) WHERE gruppid = '$group_id'");
$avg_task_clarity_3 = mysql_query("SELECT AVG(TaskClarity3) WHERE gruppid = '$group_id'");
$avg_task_clarity = ($avg_task_clarity_1+$avg_task_clarity_2+$avg_task_clarity_3)/3;
$print_task_clarity_1" UPDATE results SET results.TaskClarity = '$avg_task_clarity'"; 

if (mysql_query($print_task_clarity_1)) { echo $print_task_clarity_1; } else { echo "Error TaskClarity1: " . mysql_error(); 
4

1 に答える 1

0

まず、mysql_query() がリソースを返します。次に、そこから情報を抽出する必要があります。あなたのクエリはテーブル名を言及していません (私はそれを MyTable と呼びます)。また、1 つのクエリで 3 つすべての平均を取得できます。

これが私が始める方法です:

$table = "MyTable";
$sql = "SELECT AVG(TaskClarity1) AS avgClarity1,
               AVG(TaskClarity2) AS avgClarity2,
               AVG(TaskClarity3) AS avgClarity1
        FROM $table WHERE gruppid = '$group_id'";

$resource = mysql_query($sql);    //execute the query

if (! $resource = mysql_query($sql) ){
    echo "Error reading from table $table";
    die;
}

if (! mysql_num_rows($resource ) ){
    echo "No records found in $table";
}
else {
    $row = mysql_fetch_assoc($resource);   // fetch the first row
    $avg_task_clarity_1 = $row['avgClarity1'];
    $avg_task_clarity_2 = $row['avgClarity2'];
    $avg_task_clarity_3 = $row['avgClarity3'];
    $avg_task_clarity =
        ($avg_task_clarity_1+$avg_task_clarity_2+$avg_task_clarity_3)/3;

    //...
    // other stuff you want to do
}

これが十分に役に立たない場合はコメントしてください。回答を修正します。

于 2013-04-18T14:58:41.593 に答える