我在尝试从表中获取一些数据时遇到了问题。
它包含灯具的结果,我试图查询它以输出显示最高胜率的玩家的统计页面。
字段如下:
玩家ID可以出现在主场或远场,所以我需要获取两个场的统计数据
例如:
id fid hpid hscore apid ascore
-----------------------------------
1 1 1 1 2 0
2 1 13 0 4 1
3 1 5 1 6 0
4 1 7 0 8 1
5 1 9 1 10 0
6 2 11 0 1 1
到目前为止,我所获得的查询工作正常,可以从家庭玩家那里获取信息,但它并不能同时评估客场球员。
继承我的代码:
$sql = mysql_query("SELECT hpid, SUM(hscore) AS won, COUNT(hpid)
FROM tbl_matches
GROUP BY hpid
ORDER BY won DESC");
while ($row = mysql_fetch_array($sql)) {
echo $row[hpid]." played: ".$row['COUNT(hpid)']." won: ".$row[won]."<br />";
}
我想要做的是使用另一个选择来训练离开的统计数据,然后将它们添加到主统计数据中。
答案 0 :(得分:0)
您可以尝试使用UNION ALL在select语句中添加它们,然后重新聚合结果:
SELECT Id,SUM(Score) Score,SUM(Played) Played
from
(SELECT hpid Id,SUM(hscore) Score,COUNT(*) Played
FROM tbl_matches
GROUP BY hpid
UNION ALL
SELECT apid,SUM(ascore),COUNT(*)
FROM tbl_matches
GROUP BY apid)X
group by Id
order by Score desc
答案 1 :(得分:0)
目前还不太清楚你想做什么,所以有几个可能的答案。
首先,如果你想要的只是在主统计数据之后打印离开的统计数据,你可以简单地复制你发布的整个代码,除了将“hscore”和“hpid”改为“ascore”和“apid”。 / p>
如果您真正想要的是为每位玩家总结主场和客场得分,那么您有多种选择。关键是对于一个特定的球员,你并不关心他们是主场还是客场球员,只是他们在场上比赛。所以你可以尝试这个查询:
SELECT pid, SUM(score) AS won, COUNT(pid)
FROM (
SELECT hpid AS pid, hscore AS score FROM tbl_matches
UNION
SELECT apid AS pid, ascore AS score FROM tbl_matches
) tbl_matches_union
GROUP BY pid
ORDER BY won DESC