mysql - 尝试取具有三个内部连接表 MySQL 的列的平均值

标签 mysql inner-join average

我正在尝试获取我的 rating 表中 rate 列的平均评分。在查找了许多方法之后,似乎没有什么对我有用。但是,如果我不尝试取平均值,它确实有效。

这是我的代码(尝试 1):

    $sql = "SELECT * FROM users 
           INNER JOIN mentor ON users.id = mentor.id 
           INNER JOIN (SELECT AVG(rating.rate) AS average 
           FROM rating GROUP BY rating.owner) 
           ON mentor.id = rating.owner ORDER BY RAND()";

这是我的代码(尝试 2):

   $sql = "SELECT users.id, users.username, 
           mentor.industry, mentor.city,  
           AVG(rating.rate) AS average FROM users 
           INNER JOIN mentor ON users.id = mentor.id 
           INNER JOIN rating ON mentor.id = rating.owner
           ORDER BY RAND()";

SELECT 语句之后的代码是这样的:

$res = mysqli_query($db,$sql) or die(mysqli_error());               
if (mysqli_num_rows($res)>0) {
    while ($row=mysqli_fetch_assoc($res)){
        $variable= $row['column'];
// more variable naming
   }
}

每当我重新加载我的页面时,它都是白色的。控制台日志显示,“无法加载资源:服务器响应状态为 404(未找到)”。不太确定下一步该做什么。感谢您的任何意见,建议!

owner列是 = mentor.id = users.id

最佳答案

您有几个问题需要解决。问题是您收到 404。请尝试确保您请求的是正确的页面。

第二个问题是您的 SQL 查询,这是完全错误的。您尝试在没有 grouping 的情况下获取记录数据和聚合,这会引发错误。第二次尝试更接近正确的解决方案,所以让我们从那里开始。这是尝试:

SELECT users.id, users.username, 
           mentor.industry, mentor.city,  
           AVG(rating.rate) AS average FROM users 
           INNER JOIN mentor ON users.id = mentor.id 
           INNER JOIN rating ON mentor.id = rating.owner
           ORDER BY RAND()

尝试在您的 RDBMS 中按原样运行此查询。你会得到一个错误。您需要按用户对结果进行分组,这样用户数据就会聚合起来,并且由于导师给出了评分,您不能选择导师,但您可以选择平均评分,然后分组用户:

SELECT users.id, users.username, 
           AVG(rating.rate) AS average FROM users 
           INNER JOIN mentor ON users.id = mentor.id 
           INNER JOIN rating ON mentor.id = rating.owner
           group by users.id, users.username
           ORDER BY RAND()

关于mysql - 尝试取具有三个内部连接表 MySQL 的列的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41024282/

相关文章:

mysql - 与表对象的内连接

MATLAB Accumarray 加权平均值

php - mysql中的链接资源不稳定

jquery - 是否可以使用 Jquery 检查 tomcat 服务器是否在端口 8080 上运行?

mysql - 连接 3 个表 SQL

php - 内部连接 ​​MySQL 查询忽略 'WHERE' 子句?

mysql - 如何在mysql查询中正确格式化引号和双引号

MySql 查询错误,谁能等效查询这个?

Python-文件的列平均值

mysql avg 有条件的