我有两张 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/