php - 基于另一个表的条件求和列

标签 php mysql

我有两张 table 。

表 1 为:

Week / Team  / Player  / Stat1 / Stat2 / Stat3 / ...<br>
   1 / Team1 / Player1 / #     / #     / #     / ...<br>
   1 / Team2 / Player2 / #     / #     / #     / ...

表 2 为:

Player  / Team  / Played Game / Tiebreaker /
Player1 / Team1 / N           / #
Player2 / Team2 / Y           / #

“玩过的游戏”显示 Y 表示他们至少玩过一场游戏,N 表示他们没有玩过任何游戏。

我想要做的是按列对表 1 中每个玩家的统计数据进行求和,并将表 2 中的决胜局值添加到其中,但我想要一个条件,如果 Played Game 等于 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";

这显然只是为我总结了这些值(value)。我的问题是我不确定如何从另一个表中检索信息并在同一查询中执行我想要的操作。我尝试过使用 CASE 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;

关于php - 基于另一个表的条件求和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23528568/

相关文章:

java - 错误是Sql语法

mysql - MySQL/MariaDB查询在某些表条件下慢的可能原因

php - 显示每个 id 的表内容

javascript - 我可以在多行 php 变量中插入 php 和 html 吗?

php - jquery数据表中的Group Concat方法

javascript - 继续按钮和添加按钮

php - 从多维数组写入数据库记录

mysql - #1066 - 不是唯一的表/别名 :

mysql - 德尔福/MySql : Problems escaping strings

php - MYSQL&PHP : running an INSERT INTO SELECT query within a PHP while loop, 运行缓慢