[英]MySQL/PHP: How to calculate the average of a certain column using a JOIN statement
我有一个带有列的items
表: id
, name
, category
和一个带有列的ratings
表: id
, item
, rating
。
如何计算每个项目的平均评分?
我想返回一个php数组:
[id] => item.id
[name] => item.name
[rating] => average rating
到目前为止,这是我的PHP函数:
function getTopRatings($category) {
$pdo = Database::connect();
$sql = "SELECT item, rating, items.id, items.name FROM ratings INNER JOIN items ON ratings.item=items.id WHERE category = '" . $category . "'";
$pdo->query($sql);
foreach ($pdo->query($sql) as $row) {
$ratings[] = array(
"itemid" => $row['id'],
"name" => $row['name'],
"rating" => ?
);
}
Database::disconnect();
}
只需使用SQL AVG()
函数,而无需在PHP中完成。 您还需要GROUP BY
商品的ID,否则你会得到平均为每个项目:
SELECT item, AVG(rating) as rating, items.id, items.name FROM ratings INNER JOIN items ON ratings.item=items.id WHERE category = '" . $category . "' GROUP BY items.id;
现在,结果中的rating
字段是每个项目的平均值。
您应该阅读准备好的声明 。 现在,您的查询容易受到SQL注入的攻击。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.