在SQL查询中生成总列,连接多个表

时间:2014-04-10 16:07:20

标签: mysql sql join sum

我有一个联盟系统,包括团队,用户,然后是积分交易。

点数表中的每一行都链接到用户的ID,每个用户行都链接到一个团队ID。

当我从数据库中拉出团队时,我想通过将与该团队中的用户相关联的所有点相加来返回一个具有该团队总分的列。我有以下代码,它们独立地返回正确的点数:

SELECT SUM(ar_points.amount) AS total_points FROM ar_teams, ar_users, ar_points WHERE ar_teams.id = ar_users.team_id AND ar_users.id = ar_points.user_id AND ar_teams.id = :id

当我提取正常的团队信息时,它会将结果推送到每个团队的对象中:

$sql = $db->query("SELECT * FROM ar_teams");
$sql->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE,'Team');
$sql->execute();
return $sql->fetchAll();

我想组合这两个查询,以便将总点值作为另一个属性放入对象。

1 个答案:

答案 0 :(得分:0)

SELECT   ar_teams.*, SUM(ar_points.amount) AS total_points
FROM     ar_teams
    JOIN ar_users  ON ar_users.team_id  = ar_teams.id
    JOIN ar_points ON ar_points.user_id = ar_users.id
GROUP BY ar_teams.id