我有一个名为 ranks
的表,它存储 1-7 的值并将其与 item
和 user
id 连接。
像这样:id |用户名 |值(value) | itemid
.
为了显示项目的评分,我计算了 itemid=?
中所有值 (1-7) 的总和,并将它除以总行数。但是我没有值存储在 items
表本身。
获取平均评分:
// total
$stmt = $conn->prepare("SELECT SUM(value) as total FROM ranks WHERE itemid=?");
$stmt->bind_param("i", $id);
$stmt->execute();
$stmt->bind_result($total);
$stmt->fetch();
$stmt->close();
// num of rows
$stmt = $conn->prepare("SELECT COUNT(value) FROM ranks WHERE itemid=?");
$stmt->bind_param("i", $id);
$stmt->execute();
$stmt->bind_result($count);
$stmt->fetch();
$stmt->close();
$avg = $total/$count;
但我不知道如何按最高评分排序,除非我将评分存储在 items
表本身中。是否可以使用单独的 ranks
表?
最佳答案
您可以使用 avg()
按最高评分检索 itemid。这与获取总和并除以计数相同:
select avg(value), itemid
from ranks
group by itemid
order by avg(value) desc
关于php - 按最高平均评分排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32061586/