gpt4 book ai didi

mysql - 如何在一张表中创建多个实例?无法写入空行,因为它在 Mysql 中为 "Read Only"

转载 作者:行者123 更新时间:2023-11-29 11:16:57 26 4
gpt4 key购买 nike

好的,这就是我的问题。我正在为本地的足球队创建一个数据库。

在 Table_A (GameInfo) 中,

我用主键跟踪每个游戏

idGameSchedule: 1, 2, 3, 4, 5, etc... 

在 Table_B(玩家)中,

我正在使用主键跟踪每个玩家:

ID: 1, 2, 3, ...

问题出在玩家表中的特定列上。称为:AttishedGame。当我运行这个时:

SELECT * FROM Players, GameInfo;

我获取每个游戏的每个玩家的前 3 行信息。因此,最左边的列是来自玩家ID。所以它看起来像:

(见附图) Simplified Query Result

我的问题:

我无法将信息写入 AttishedGame 列,因为只有当您查询两个表时,它才有每个游戏的实例。因此,如果我们只是查询:

SELECT * FROM Players;

我只会为每个玩家收到 1 个唯一的 ID。该表不会获取 GameInfo 表中每个游戏的 ID。所以他们的球员名字不会重复。我无法将数据写入 AttendedGame 的行,因为每个游戏都没有一行。›

最终,当有 4 场比赛时,玩家 表中将有 4 个 id,当有 5 场比赛时,将有 5 行具有相同的 id。因此,如果我想缩小出席率,我可以使用 WHERE 语句。

我想知道的是,当我查询时,玩家是否出现在游戏中或没有出现在游戏中:

SELECT * FROM Players;

我正在使用 MySQL Workbench。这是外键问题吗?

这是我在 Stackoverflow 上的第一个问题,所以请友善。谢谢!

最佳答案

您之所以获得所有这些结果,是因为您尚未指定表之间的任何关系。因此它返回两个表中所有行之间的完整叉积。

您的设计未正确规范化。您需要一个关系表来跟踪每个玩家参加了哪些游戏,您不应将此信息放在 Players 表中。

CREATE TABLE PlayerAttendedGame (
player_id INT(11),
game_id INT(11),
PRIMARY KEY (player_id, game_id),
CONSTRAINT player_fk FOREIGN KEY (player_id) REFERENCES Players(ID),
CONSTRAINT game_fk FOREIGN KEY (game_id) REFERENCES GameInfo(idGameSchedule));

您在此表中为每个玩家参加的每场比赛添加一行。

然后,要查找玩家参加了哪些比赛,您需要加入 3 张 table 。

SELECT p.Name, g.GameDate
FROM Players AS p
JOIN PlayerAttendedGame pg ON p.ID = pg.player_id
JOIN GameData AS g ON pg.game_id = g.idGameSchedule

关于mysql - 如何在一张表中创建多个实例?无法写入空行,因为它在 Mysql 中为 "Read Only",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39563963/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com