【问题标题】:Using SQL to create football fixtures?使用 SQL 创建足球赛程?
【发布时间】:2012-11-01 01:50:57
【问题描述】:

很难解释,但说我有一个名为“团队”的表,其中包含 5 个团队,如下所示:

 team_id, teamname, manager
   1,       Team1,    1
   2,       Team2,    10
   3,       Team3,    3
   4,       Team4,    5
   5,       Team5,    6

我需要创建另一个与此类似的表(例如名为 TeamFixtures)

  id, HomeTeam, HomeScore, AwayScore, AwayTeam
                  NULL        NULL

如何使 HomeTeam 和 AwayTeam 成为“teams”表的 team_id?

每支球队都需要这个,这样他们就可以在主场和客场比赛两次交手。

有没有一个查询可以让我更快,而不是输入固定装置 1by1

【问题讨论】:

  • 你怎么知道某个团队是hometeamawayteam
  • 我不明白,他们打了两次,所以一个总是客队,一个总是主场。 1 会播放 2,然后 2 会播放 1。大声笑很难解释:S
  • 对我来说听起来像是家庭作业......

标签: php sql


【解决方案1】:

当一个关系的属性是另一个关系的键时,它被称为Foreign Key

对于您的TeamFixtures 表,您将有两个外键hometeamawayteam

您的CREATE 语句如下所示:

CREATE TABLE teamfixtures(
    ...
    hometeam INT,
    awayteam INT,
    ...
    CONSTRAINT fk_hometeam FOREIGN KEY(hometeam) REFERENCES teams, 
    CONSTRAINT fk_awayteam FOREIGN KEY(awayteam) REFERENCES teams,
    CONSTRAINT ck_teams CHECK(hometeam <> awayteam)
    )

【讨论】:

  • +1 不要忘记您需要在 hometeamawayteam 列上使用唯一的复合键,这样它们就不能互相播放
  • @AlexP 啊,是的。不过,支票应该涵盖这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-08-18
  • 1970-01-01
  • 2022-01-12
  • 2020-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多