繁体   English   中英

MySQL / PHP:如何使用JOIN语句计算某一列的平均值

[英]MySQL/PHP: How to calculate the average of a certain column using a JOIN statement

我有一个带有列的items表: idnamecategory和一个带有列的ratings表: iditemrating

如何计算每个项目的平均评分?

我想返回一个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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM