我想知道 SQL 是否可以自己完成此任务,或者我是否应该使用 PHP。
(golf) 数据库有一个rounds
表和一个holes
表。 rounds.id
存储在该轮的洞记录中。
holes
表有(在许多其他领域中)firstPutt
, secondPutt
, thirdPutt
. 这些是存储距离并默认为零的浮点数。
我的雇主想要做的是在圆桌中存储该轮所有洞的最后一个推杆长度的总和。
我意识到,如果我有一个putts
表引用holes.id
,这将是一个更好的结构,但目前这是不可能的。
所以pseudoSQL中的更新会是这样的
UPDATE holes h, rounds r
SET r.sumOfLastPutts = (
SELECT thirdPutt if thirdPutt is not 0
OR secondPutt if secondPutt is not zero AND thirdPutt is zero
OR firstPutt if firstPutt is not zero AND secondPutt is zero)
) WHERE h.round = rounds.id
这可能只使用 SQL 吗?
在此示例中,该轮的数字为 145,即红色框中数字的总和。
离开马丁帕金的回答,我可以得到这样的单轮总和:
SELECT
SUM(
CASE
WHEN h.thirdPutt != 0 THEN h.thirdPutt
WHEN h.secondPutt != 0 THEN h.secondPutt
WHEN h.firstPutt != 0 THEN h.firstPutt
END
)
FROM holes h
WHERE h.round = 3044