Php 基于另一个表中的条件求和列

Php 基于另一个表中的条件求和列,php,mysql,Php,Mysql,我有两张桌子 表1是: Week / Team / Player / Stat1 / Stat2 / Stat3 / ...<br> 1 / Team1 / Player1 / # / # / # / ...<br> 1 / Team2 / Player2 / # / # / # / ... Where Played Game显示Y表示他们至少玩过一场游戏,N表示他们没有玩过任何游戏 我要做的是将表1中每个

我有两张桌子

表1是:

Week / Team  / Player  / Stat1 / Stat2 / Stat3 / ...<br>
   1 / Team1 / Player1 / #     / #     / #     / ...<br>
   1 / Team2 / Player2 / #     / #     / #     / ...
Where Played Game显示Y表示他们至少玩过一场游戏,N表示他们没有玩过任何游戏

我要做的是将表1中每个玩家的统计数据按列求和,并将表2中的平局决胜局值添加到其中,但我想要一个条件,如果玩的游戏等于N,它只返回0作为值。希望这是有道理的

这是我的代码:

$sql = "SELECT Player, 

SUM (Stat1) AS Stat1,
SUM (Stat2) AS Stat2,
SUM (Stat3) AS Stat3

FROM Table 1

GROUP BY Player
ORDER BY Stat1 DESC";
对我来说,这显然是对价值的总结。我的问题是我不确定如何从另一个表中检索信息,并在同一个查询中执行我想要的操作。我试过一个带有sum的WHEN和IF语句,但都不起作用。我是新来的,所以我正在努力学习,但我现在被卡住了


非常感谢您的帮助。

您需要条件求和,它使用
CASE
语句作为聚合函数的参数:

SELECT t1.Player, 
       (SUM(CASE WHEN t2.Played = 'Y' THEN Stat1 ELSE 0 END) +
        MAX(CASE WHEN t2.Played = 'Y' THEN TIEBREAKER ELSE 0 END)
       ) AS Stat1,
       SUM(CASE WHEN t2.Played = 'Y' THEN Stat2 ELSE 0 END) AS Stat2,
       SUM(CASE WHEN t2.Played = 'Y' THEN Stat3 ELSE 0 END) AS Stat3
FROM Table1 t1 LEFT JOIN
     Table2 t2
     ON t1.player = t2.player AND t1.team = t2.team
GROUP BY t1.Player
ORDER BY Stat1 DESC;

要从两个表中获取数据,请将另一个表包含在

`FROM table1, table2` 
和他们一起

`Where Table1.Player=Table2.Player`
这样,在结果中,Player列将拥有每个Player一次,sum列(如Stat1、Stat2、Stat3)将对表2中每个记录的Stat列求和,该记录在表1中有一个对应的Player(即所有记录)

我不知道php部分,也不知道你说的是什么意思

我只希望在统计数据汇总后添加一次平局破坏者

但我认为这一查询将适用于其余部分

`SELECT Table2.Player, #I assume Table1.Player has repeat values and stuff,
SUM ( if ( Table2.PlayedGame="Y", Table1.Stat1, 0) ) AS Stat1,
SUM ( if ( Table2.PlayedGame="Y", Table1.Stat2, 0) ) AS Stat2,
SUM ( if ( Table2.PlayedGame="Y", Table1.Stat3, 0) ) AS Stat3
FROM Table1, Table2
Where Table1.Player = Table2.Player
GROUP BY Player
ORDER BY Stat1 DESC";`

谢谢你的回复,但是我使用了这种格式,它仍然不起作用
$sql=“选择t1.Player,SUM(当t2.PlayedGames='Y'时为案例,然后(Plants+t2.Tiebreaker)否则为0结束)作为EUGBL17FLPlayerData t1左侧的植物在t1上加入EUGBL17FLPlayerInfo t2。Player=t2.Player和t1.Team=t2。团队按t1分组。玩家按植物顺序说明”我想澄清一下,当玩的游戏等于N时,它会显示信息并输出0,但是它会为它加在一起的每一个属性加上平局破坏者值,而我只希望平局破坏者在统计数据求和后添加一次。@user3601494您不想要条件求和。您想规范化您的设计!?!!!谢谢这似乎奏效了@草莓我不知道你是什么意思?@user3601494那么你该知道了!
`SELECT Table2.Player, #I assume Table1.Player has repeat values and stuff,
SUM ( if ( Table2.PlayedGame="Y", Table1.Stat1, 0) ) AS Stat1,
SUM ( if ( Table2.PlayedGame="Y", Table1.Stat2, 0) ) AS Stat2,
SUM ( if ( Table2.PlayedGame="Y", Table1.Stat3, 0) ) AS Stat3
FROM Table1, Table2
Where Table1.Player = Table2.Player
GROUP BY Player
ORDER BY Stat1 DESC";`