【问题标题】:Trouble with having a subquery with INNER JOIN使用 INNER JOIN 进行子查询时遇到问题
【发布时间】:2014-04-07 18:18:25
【问题描述】:

我在尝试使用带有 INNER JOIN 的子查询时遇到问题。

在下面的代码中,我尝试计算的平均评分只需该玩家 (a.player) 的平均评分

通过查看下面的脚本,我的问题是

1) 使用 INNER JOIN 时我应该在哪里嵌套子查询?

2) 表中大约有 20 个名称我从(表“学院”)中提取此信息。在子查询中,我需要 'b.rating' 用于该特定玩家。我是否需要在子查询中使用 WHERE 子句,例如“WHERE player=a.player”?

$query = "SELECT a.player,a.team,a.loc,a.pic,a.rank,b.rating FROM college AS a
        JOIN (SELECT AVG(rating) AS rating FROM college_rating) AS b
        ON a.player=b.player
        ORDER BY rank DESC LIMIT 20";
$run = mysqli_query($link,$query);
while($row = mysqli_fetch_array($run)) {
echo $row['player'] . ' ' . $row['rating'] . ' ' . $row['team'] . '<br>';
}

【问题讨论】:

    标签: sql join subquery


    【解决方案1】:

    您需要在子查询中找到每个玩家的平均评分,如下所示

    $query = "SELECT a.player,a.team,a.loc,a.pic,a.rank,b.rating FROM college AS a
              JOIN (
                    SELECT player,AVG(rating) AS rating 
                    FROM college_rating
                    GROUP BY player
                   ) AS b
            ON a.player=b.player
            ORDER BY rank DESC LIMIT 20";
    

    【讨论】:

      【解决方案2】:

      $query = "选择 a.player,a.team,a.loc,a.pic,a.rank , ( SELECT AVG(rating) FROM college_rating where player = a.player GROUP BY player ) 作为评分 从大学 ORDER BY 等级 DESC LIMIT 20";

      【讨论】:

        猜你喜欢
        • 2014-03-13
        • 1970-01-01
        • 1970-01-01
        • 2021-11-29
        • 2013-03-09
        • 1970-01-01
        • 2020-08-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多