MySQL/PHP:如何使用JOIN语句计算特定列的平均值
我有一个MySQL/PHP:如何使用JOIN语句计算特定列的平均值,php,mysql,Php,Mysql,我有一个项目表和列:id,名称,类别,还有一个评级表和列:id,项目,评级 如何计算每个项目的平均评分 我希望返回一个php数组,其中包含: [id] => item.id [name] => item.name [rating] => average rating 这是迄今为止我的PHP函数: function getTopRatings($category) { $pdo = Database::connect(); $sql = "SELECT item
项目
表和列:id
,名称
,类别
,还有一个评级
表和列:id
,项目
,评级
如何计算每个项目的平均评分
我希望返回一个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();
}
只需使用SQLAVG()
函数,无需在PHP中执行。您还需要根据项目的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;
现在,结果中的评分
字段是每个项目的平均值
你应该仔细阅读。现在,您的查询容易受到SQL注入的攻击