在MySQL中使用AVG功能

时间:2011-03-15 15:55:24

标签: php mysql average

我想知道我数据库中的前三名学生,所以我使用AVG功能,但似乎我有一些错误,这是我的代码:

$result = mysql_query("SELECT grade.GStudNo, AVG(grade.Grade) as Grade, students.LName, students.FName, students.MName, students.Course
FROM students INNER JOIN grade ON students.StudNo = grade.GStudNo
WHERE GSem = '1st Semester' AND GYear = '2007'
GROUP BY grade.GStudNo
ORDER BY AVG(grade.Grade) ASC")
...
<?php while($myrow = mysql_fetch_assoc($result))
{?>
  <tr>
    <td><?php echo "$myrow[LName] ";echo "$myrow[FName] "; echo "$myrow[MName]"; ?></td>
    <td><?php echo "$myrow[Grade]";?></td>
  </tr>
<?php } ?>

这是错误消息:注意:未定义的索引:第368行的C:\ xampp \ htdocs \ strawman \ default.php等级

但是我定义了AVG(grade.Grade)AS等级.. :(

2 个答案:

答案 0 :(得分:1)

MySQL可能会混淆,因为您使用字段名称Grade作为别名,然后再次在您的ORDER子句中在AVG中使用它。试试这个(它只调用一次AVG):

SELECT grade.GStudNo, AVG(grade.Grade) as gradeAverage ... 
ORDER BY gradeAverage ASC

而且,为什么你在变量周围使用双引号?处理起来要快得多:

<?php echo $myrow['LName'] .' '. $myrow['FName'] .' '. $myrow['MName']; ?>

答案 1 :(得分:0)

您使用以下语法:

<?php echo "$myrow[LName] ";

你会想要使用这样的东西:

<?php echo "$myrow['LName'] ";

或者,我使用双引号时的首选语法:

<?php echo "{$myrow['LName']} ";

其他变量也是如此。

抛出引号将导致PHP“猜测”你的意思。它有时会好起来,其他时候可能会出错。