我正在尝试从我的表的评级列中获取平均值,然后在HTML表格中为每个不同的div_id及其平均评级显示一行,按降序排列。我知道这应该很容易,但我很难搞清楚。任何帮助将不胜感激。
<?php
mysql_connect($db_server, $db_username, $db_password) or die(mysql_error());
mysql_select_db($db_database) or die(mysql_error());
$result = mysql_query("SELECT * FROM ratings") or die(mysql_error());
while($row = mysql_fetch_object( $result )){
$ad = $row->div_id;
$result2 = mysql_query("SELECT div_id, avg(rating) AS avg, COUNT(*) FROM ratings WHERE div_id = '" . $ad . "' ORDER BY div_id DESC ") or die(mysql_error());
while($row2 = mysql_fetch_array( $result2 )){
$adid = $row2[0];
$count = $row2[2];
$avg = round($row2[1],2);
echo "<tr><td>";
echo $adid;
echo "</td><td>";
echo $avg;
echo "</td></tr>";
}
}
?>
答案 0 :(得分:1)
而是执行两次查询,您只能在一个查询中使用GROUP BY术语。
SELECT div_id, avg(rating) AS avg, COUNT(*) FROM ratings GROUP BY div_id ORDER BY div_id DESC
php code
<?php
mysql_connect($db_server, $db_username, $db_password) or die(mysql_error());
mysql_select_db($db_database) or die(mysql_error());
$result = mysql_query("SELECT div_id, avg(rating) AS avg, COUNT(*) FROM ratings GROUP BY div_id ORDER BY avg DESC") or die(mysql_error());
while($row = mysql_fetch_array( $result )){
$adid = $row[0];
$count = $row[2];
$avg = round($row[1],2);
echo "<tr><td>" . $adid . "</td><td>" . $avg . "</td></tr>";
}
?>
答案 1 :(得分:0)
也许您应该尝试在一个查询中执行此操作:
SELECT div_id, avg(rating) AS avgrating, COUNT(*) as cnt
FROM ratings
GROUP BY div_id
ORDER BY avgrating desc;