首页 > 解决方案 > 一级方程式数据库 - 无法让积分奖励系统工作

问题描述

我想通过这个问题的标题,您已经知道我的问题是什么。

自上周以来,我一直被困在这部分,我似乎无法找到解决方案。

这是我的代码:

CREATE TABLE Grand_Prix(
ID INTEGER PRIMARY KEY IDENTITY,
Name VARCHAR(45),
Data_GP DATE,
Points INTEGER,
Position INTEGER,
Track_id INTEGER REFERENCES Track(ID),
Country_id INTEGER REFERENCES Country(ID),
Driver_id INTEGER REFERENCES Driver(ID)
)

那是我的大奖赛表,积分和位置在哪里,然后我做了一些插入,如下所示:

INSERT INTO Grande_Premio(Name, Data_GP, Track_id, Country_id, Driver_id, Position)
VALUES ('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 1, 20),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 2, 16),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 3, 18),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 4, 14),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 5, 11),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 6, 12),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 7, 9),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 8, 17),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 9, 15),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 10, 10),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 11, 13),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 12, 19),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 13, 7),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 14, 4),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 15, 8),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 16, 6),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 17, 5),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 18, 2),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 19, 3),
('Gulf Air Bahrain Grand Prix', '03/26/2021', 1, 13, 20, 1)

之后,我进行更新,以便在 X 位置完成的车手获得 X 分:

UPDATE Grand_Prix
SET Points += 25
WHERE Position = 1

UPDATE Grand_Prix
SET Points += 18
WHERE Position = 2

UPDATE Grand_Prix
SET Points += 15
WHERE Position = 3

UPDATE Grand_Prix
SET Points += 12
WHERE Position = 4

UPDATE Grand_Prix
SET Points += 10
WHERE Position = 5

UPDATE Grand_Prix
SET Points += 8
WHERE Position = 6

UPDATE Grand_Prix
SET Points += 6
WHERE Position = 7

UPDATE Grand_Prix
SET Points += 4
WHERE Position = 8

UPDATE Grand_Prix
SET Points += 2
WHERE Position = 9

UPDATE Grand_Prix
SET Points += 1
WHERE Position = 10

然而,在此之后,当我在 Grand_Prix 表上选择时,点仍然显示为 NULL,知道为什么吗?

我对 SQL 和这个网站有点陌生,所以如果我不能很好地表达自己,或者我只是犯了一个我没有看到的非常基本的错误,我很抱歉。

谢谢阅读!

标签: sqlsql-server

解决方案


您可以使用case表达式

update grand_prix
    set points += (case when position = 1 then 25
                        when position = 2 then 18
                        . . . 
                        else 0
                    end);

推荐阅读