Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 对不同类别中的每个队员的所有分数求和_Php_Mysql - Fatal编程技术网

Php 对不同类别中的每个队员的所有分数求和

Php 对不同类别中的每个队员的所有分数求和,php,mysql,Php,Mysql,我需要为每个玩家计算所有分数(他的核心) 现在,我可以求player1或player2的和。例如,在第7类中,玩家1是汤姆,而在第5类中,玩家2也是汤姆。结果应为Tom=2+10=12分 SELECT SUM(subpoints) AS hiscore, player1_id, player2_id, FROM ( SELECT COUNT(current_record)*2 AS subpoints, player1_id, player2_id FROM db WHERE categ

我需要为每个玩家计算所有分数(他的核心)

现在,我可以求player1或player2的和。例如,在第7类中,玩家1是汤姆,而在第5类中,玩家2也是汤姆。结果应为Tom=2+10=12分

SELECT SUM(subpoints) AS hiscore, player1_id, player2_id, FROM (
    SELECT COUNT(current_record)*2 AS subpoints, player1_id, player2_id FROM db WHERE category_id IN (7,8) GROUP BY player1_id
       UNION ALL
    SELECT COUNT(current_record)*10 AS subpoints, player1_id, player2_id FROM db WHERE category_id IN (1,2,3,4,5,6) GROUP BY player1_id
) AS hi
GROUP BY player1_id
样本表:

 category_id | player1 | player2 | subpoints |
-------------+---------+---------+-----------+
           7 |   Tom   |  Mike   |     2     |
           5 |  Peter  |  Tom    |    10     |
----------------------------------------------
最终结果应为:

  Player | hiscore |
  -------+---------+
  Tom    |   12    |
  Mike   |    2    |
  Peter  |   10    |
您可以先取消填充列,然后将其聚合:

select player, sum(subpoints) hiscore
from
(
  select category_id, player1 player, subpoints
  from db
  union all
  select category_id, player2 player, subpoints
  from db
) d
group by player;

如果将原始查询集成到此中,则代码将类似于:

select player, sum(subpoints) hiscore
from
(
  SELECT COUNT(current_record)*2 AS subpoints, player1_id as player
  FROM db 
  WHERE category_id IN (7,8) 
  GROUP BY player1_id
  UNION ALL
  SELECT COUNT(current_record)*10 AS subpoints, player2_id as player
  FROM db 
  WHERE category_id IN (1,2,3,4,5,6) 
  GROUP BY player2_id
) d
group by player

好的,这很有效。我把“player2\u id作为player1\u id”搞错了。