mysql 如果预测表和结果表中的用户ID、种族ID和预测匹配,则分配值

cclgggtu  于 2023-02-28  发布在  Mysql
关注(0)|答案(1)|浏览(119)

我正在尝试做一个F1的poule,用户可以输入预测。他们预测谁将驾驶第一,第二,第三,杆位和最快圈速。我有一个表,所有的外键称为种族。
Table race
| 标识符|id_用户|id_种族|极点_位置|第1版|2e|第三版|锶|
| - ------|- ------|- ------|- ------|- ------|- ------|- ------|- ------|
| 1个|1个|1个|三个|1个|第二章|三个|四个|
| 第二章|第二章|1个|1个|第二章|五个|四个|1个|
| 三个|1个|四个|1个|1个|第二章|四个|四个|
它链接到一个包含所有驱动程序信息的主键表。
Table driver
| 身份证|外消旋体|纳姆|钠胺-1e|钠胺_2e|钠铝酸三乙酯|名称_页码|naam_sr|土地标识|组标识|
| - ------|- ------|- ------|- ------|- ------|- ------|- ------|- ------|- ------|- ------|
| 1个|1个|马克斯·维斯塔潘|马克斯·维斯塔潘|马克斯·维斯塔潘|马克斯·维斯塔潘|马克斯·维斯塔潘|马克斯·维斯塔潘|1个|1个|
| 第二章|十一|塞尔吉奥·佩雷斯|塞尔吉奥·佩雷斯|塞尔吉奥·佩雷斯|塞尔吉奥·佩雷斯|塞尔吉奥·佩雷斯|塞尔吉奥·佩雷斯|四个|1个|
| 三个|四十四|刘易斯·汉米尔顿|刘易斯·汉米尔顿|刘易斯·汉米尔顿|刘易斯·汉米尔顿|刘易斯·汉米尔顿|刘易斯·汉米尔顿|第二章|第二章|
| 四个|六十三|乔治·罗素|乔治·罗素|乔治·罗素|乔治·罗素|乔治·罗素|乔治·罗素|第二章|第二章|
| 五个|二十四|周冠宇|周冠宇|周冠宇|周冠宇|周冠宇|周冠宇|十三|三个|
| 六个|七十七|瓦尔泰里·博塔斯|瓦泰里·博塔斯|瓦尔泰里·博塔斯|瓦尔泰里·博塔斯|瓦尔泰里·博塔斯|瓦尔泰里·博塔斯|十四|三个|
| 七|二十一|尼克·德·弗里斯|尼克·德·弗里斯|尼克·德·弗里斯|尼克·德·弗里斯|尼克·德·弗里斯|尼克·德·弗里斯|1个|四个|
| 八个|二十二|角田由纪|角田由纪|角田由纪|角田由纪|角田由纪|角田由纪|十五|四个|
| 九|十个|皮埃尔·加斯利|皮埃尔·加斯利|皮埃尔·加斯利|皮埃尔·加斯利|皮埃尔·加斯利|皮埃尔·加斯利|十个|五个|
| 十个|三十一|埃斯特万·奥孔|埃斯特万·奥孔|埃斯特万·奥孔|埃斯特万·奥孔|埃斯特万·奥孔|埃斯特万·奥孔|十个|五个|
| 十一|十四|费尔南多·阿隆索|费尔南多·阿隆索|费尔南多·阿隆索|费尔南多·阿隆索|费尔南多·阿隆索|费尔南多·阿隆索|十六|六个|
| 十二|十八|兰斯漫步|兰斯漫步|兰斯漫步|兰斯漫步|兰斯漫步|兰斯漫步|十八|六个|
| 十三|十六|夏尔·勒克莱尔|夏尔·勒克莱尔|夏尔·勒克莱尔|夏尔·勒克莱尔|夏尔·勒克莱尔|夏尔·勒克莱尔|十七|七|
| 十四|十六|卡洛斯·塞恩斯|卡洛斯·赛兹|卡洛斯·塞恩斯|卡洛斯·塞恩斯|卡洛斯·赛里斯|卡洛斯·塞恩斯|五十五|七|
| 十五|二十个|凯文·马格努森|凯文·马格努森|凯文·马格努森|凯文·马格努森|凯文·马格努森|凯文·马格努森|二十一|八个|
| 十六|二十七|尼科·胡肯伯格|尼科·胡肯伯格|尼科·胡肯伯格|尼科·胡肯伯格|尼科·胡肯伯格|尼科·胡肯伯格|三个|八个|
| 十七|四个|兰多·诺里斯|兰多·诺里斯|兰多·诺里斯|兰多·诺里斯|兰多·诺里斯|兰多·诺里斯|第二章|九|
| 十八|八十一|奥斯卡·皮亚斯特里|奥斯卡·皮亚斯特里|奥斯卡·皮亚斯特里|奥斯卡·皮亚斯特里|奥斯卡·皮亚斯特里|奥斯卡·皮亚斯特里|十九|九|
| 十九|第二章|洛根·萨金特|洛根·萨金特|洛根·萨金特|洛根·萨金特|洛根·萨金特|洛根·萨金特|九|十个|
| 二十个|二十三| Alexandria ·阿尔邦| Alexandria ·阿尔邦| Alexandria ·阿尔邦| Alexandria ·阿尔邦| Alexandria ·阿尔邦| Alexandria ·阿尔邦|二十个|十个|
有第二个表的结果是完全相同的种族表。
Table result
| 身份证|种族标识|极点位置|第1版|2e|第三版|斯内尔斯特龙德|
| - ------|- ------|- ------|- ------|- ------|- ------|- ------|
| 1个|1个|1个|1个|第二章|三个|1个|
| 第二章|四个|1个|三个|四个|五个|六个|
现在我想实现的是,当种族和结果中的关键字匹配种族ID,用户ID和司机正确预测,一些点张贴在一个表中。我现在设法使和检查查询与sql,但我不能输入该值,以便可以弥补的立场。有人有一个想法,指出我在正确的方向?
先谢了
这就是我希望达到的目标:

我用来检查预测是否正确的代码如下所示:

SELECT * FROM `race`;
SELECT * FROM uitslag;

SELECT Pole_position, 
    CASE 
        WHEN EXISTS (
            SELECT *
            FROM uitslag
            WHERE uitslag.pole_position=race.Pole_position
            AND uitslag.race_id=race.id_race
        )
        THEN '5'
        ELSE '0'
    END
FROM race;

SELECT 1e,
    CASE
        WHEN EXISTS (
            SELECT *
            FROM uitslag
            WHERE uitslag.1e = race.1e
            AND uitslag.race_id = race.id_race
        )
        THEN '15'
        ELSE '0'
    END
FROM race;

此查询的结果如下所示:

我希望有人能帮助我或给我指出正确的方向。
先谢了

8ehkhllq

8ehkhllq1#

有点晚了,但我想这就是你要找的:

SELECT
    `r`.`id_voorspel`, `r`.`id_user`, `r`.`id_race`,
    IF (`r`.`Pole_position` = `p`.`pole_position`, 5, 0) AS `pole_position`,
    IF(`r`.`1e` = `p`.`1e`, 25, 0) AS `1e`,
    IF(`r`.`2e` = `p`.`2e`, 18, 0) AS `2e`,
    IF(`r`.`3e` = `p`.`3e`, 15, 0) AS `3e`,
    IF(`r`.`sr` = `p`.`snelste_ronde`, 10, 0) AS `snelste_ronde`,
    (
        IF (`r`.`Pole_position` = `p`.`pole_position`, 5, 0) +
        IF(`r`.`1e` = `p`.`1e`, 25, 0) +
        IF(`r`.`2e` = `p`.`2e`, 18, 0) +
        IF(`r`.`3e` = `p`.`3e`, 15, 0) +
        IF(`r`.`sr` = `p`.`snelste_ronde`, 10, 0)
    ) AS `total`
FROM `race` `r`
JOIN `uitslag` `p` ON `r`.`id_race` = `p`.`race_id`;

相关问题