我将非常感谢以下
的帮助SELECT distinct playerid as le_player,
(select sum(score) from playerresults where playerid = le_player) as wins,
(select handicap from players where playerid = le_player) as handicap, playername,
(select count(playerid)*3 from playerresults where playerid = le_player)as totalgames,
(select count(playerid)*3 from playerresults where playerid = le_player) - (select sum(score) from playerresults where playerid = le_player)as lost,
round((select sum(score) from playerresults where playerid = le_player) / (select count(playerid)*3 from playerresults where playerid = le_player) * 100,2) as percent,
teams.team_name
FROM playerresults
INNER JOIN teams on (select players.team_id from players where players.id = playerid) = teams.id
WHERE playerresults.season = 2012 AND playerresults.league = 4
ORDER BY wins desc,totalgames asc
直到我添加以下行才开始工作:
(select handicap from players where playerid = le_player) as handicap
这会产生Subquery returns more than 1 row
错误。
让我的玩家桌面上添加了一个新的字段,所以我想我可以将这一段sql添加到我的原始文件中。
有什么想法吗?
由于 分克
答案 0 :(得分:5)
您可能需要考虑对表使用连接而不是所有相关子查询:
SELECT playerid as le_player,
sum(pr.score) as wins,
p.handicap,
pr.playername,
count(pr.playerid)*3 as totalgames,
count(pr.playerid)*3 - sum(pr.score) as lost,
round(sum(pr.score) / (count(pr.playerid)*3) * 100,2) as percent,
t.team_name
from playerresults pr
left join players p
on pr.playerid = p.id
left join teams t
on p.team_id = teams.id
where pr.season = 2012
AND pr.league = 4
group by pr.playerid
ORDER BY wins desc, totalgames asc;
甚至是这样的事情:
SELECT pr.playerid as le_player,
Score as wins,
p.handicap,
pr.playername,
CountPlayerId*3 as totalgames,
CountPlayerId*3 - Score as lost,
round(Score / (CountPlayerId*3) * 100,2) as percent,
t.team_name
from
(
select playerid,
sum(pr.score) Score,
count(pr.playerid) CountPlayerId
from playerresults
WHERE season = 2012
AND league = 4
group by playerid
) pr
left join players p
on pr.playerid = p.id
left join teams t
on p.team_id = teams.id
where pr.season = 2012
AND pr.league = 4
ORDER BY wins desc, totalgames asc;