[英]PHP/MySQL Problems with multiple select statements in one query
我在尝试从表中获取一些数据时遇到问题。
它包含固定装置的结果,我试图对其进行查询,以输出显示赢率最高的球员的统计页面。
字段如下:
玩家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 />";
}
我想做的是使用另一个选择来训练客场数据,然后将其添加到主场数据中。
您可以尝试使用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
尚不清楚您要做什么,因此有几种可能的答案。
首先,如果您只想在主场统计数据后打印客场统计数据,则只需复制您发布的整个代码,只是将“ hscore”和“ hpid”更改为“ ascore”和“ apid”即可。
如果您真正想要的是总结每个球员的主场得分和客场得分,那么您有几种选择。 关键是,对于特定的球员,您并不真正在乎他们是本国球员还是客场球员。 因此,您可以尝试以下查询:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.