我对某些事情感到有些困惑,我希望你们能帮助我解决这个问题,这是我能画的最好的比喻,以便更有意义:说数据库存储所有用户'篮球比赛的预测,所以列可能是
id, user, homeTeamScore, visitingTeamScore, pointTotal
我怎么能首先看到他们是否预测homeTeamScore
和visitingTeamScore
完全正确,如果不是这样,他们是否正确预测了胜利者(即看他们的homeTeamScore - awayTeamScore> 0 in主队取得胜利的情况)。另外,我怎样才能增加pointTotal(基于第一种情况,我根据第二种情况增加它,因为它是更准确的预测)。
对不起,如果我不清楚的话。如果是这样的情况让我知道,我会尝试重申它。显然,由于我的问题的性质,我不是在寻找非常具体到我问题的答案;一些用于比较数据库值的SQL查询/ PHP代码结构将有很大帮助。再次感谢。
编辑:我真的希望我可以选择你的答案,或者至少赞同他们两个,但唉,我没有15点声望。它完全符合我的要求,所以我感谢你们!答案 0 :(得分:0)
您将使用CASE或IF。
在这些例子中,我假设主队得分为98而客队得分为95分。正确得到10分,否则为5分。
CASE语法:
UPDATE predictions SET pointTotal = CASE WHEN homeTeamScore = 98 AND visitingTeamScore = 95 THEN 10 ELSE 5 END
IF语法:
UPDATE predictions SET pointTotal = IF(homeTeamScore = 98 AND visitingTeamScore = 95, 10, 5)
您还可以(a)嵌套条件和(b)使用表达式而不是硬编码点数。例如:
UPDATE predictions SET pointTotal =
IF(homeTeamScore = 98 AND visitingTeamScore = 95,
10,
IF(homeTeamScore > visitingTeamScore,
GREATEST(1, 5-ABS((homeTeamScore - visitingTeamScore)-(98-95)),
0
)
)
在这个例子中,你得到10分是完全正确的,得到0分用于预测客队将获胜,从1到5用于预测主队赢了(确切得分是根据你的传播计算的预测与实际传播相比)。
答案 1 :(得分:0)
考虑以下内容......
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,user VARCHAR(12) NOT NULL
,home_score INT NOT NULL
,away_score INT NOT NULL
);
INSERT INTO my_table (user,home_score,away_score) VALUES
('Alice',104,87),
('Ben',86,107),
('Charlie',92,111),
('Dave',96,98),
('Ellen',110,95);
让我们说克罗伊登的飞行员被伊灵鹰队击败他们的主场,92比111 ......
SELECT *
, CASE WHEN (home_score,away_score) = (92,111) THEN 3
WHEN home_score < away_score THEN 2
ELSE 0
END points
FROM my_table;
+----+---------+------------+------------+--------+
| id | user | home_score | away_score | points |
+----+---------+------------+------------+--------+
| 1 | Alice | 104 | 87 | 0 |
| 2 | Ben | 86 | 107 | 2 |
| 3 | Charlie | 92 | 111 | 3 |
| 4 | Dave | 96 | 98 | 2 |
| 5 | Ellen | 110 | 95 | 0 |
+----+---------+------------+------------+--------+