繁体   English   中英

一个查询中有多个select语句的PHP / MySQL问题

[英]PHP/MySQL Problems with multiple select statements in one query

我在尝试从表中获取一些数据时遇到问题。

它包含固定装置的结果,我试图对其进行查询,以输出显示赢率最高的球员的统计页面。

字段如下:

  • id(每次比赛的唯一ID)
  • fid(灯具ID,因为一个灯具最多可以有13个匹配项)
  • hpid(主玩家ID)
  • hscore(主球员得分)
  • 敏捷(客场球员ID)
  • 得分(客场得分)

玩家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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM