如何将团队A和团队B合并为共享相同匹配ID的单个记录?

问题描述 投票:0回答:2

我正在建立一个足球数据库,并有一个团队桌和一个夹具表(当然还有其他许多......)。

单个夹具有两个记录,一个用于团队A,一个用于团队B.例如:

ID: 0
Team: Arsenal
Result: Win

ID 0
Team: Chelsea
Result: Loss

首先,这是最好的方法吗?或者一个灯具是否应该是一个包含两列两列的单一记录?

其次,在查询时如何组合这些数据。例如,如果我想返回涉及阿森纳的所有赛程给我:

ID: 0
Team 1: Arsenal
Team 2: Chelsea
Result: Win

只有正确方向的一点才会很棒。

真的很感激帮助。

谢谢!!

sql database ms-access
2个回答
1
投票

您显示的表结构看起来更像是数据传输格式。

对于长期存储和查询,您可能会将其分为两个表:

  • 球队: ID 名称
  • 比赛: match_id local_team_id visitor_team_id 结果

否则即使是简单的查询,例如你要问的问题,也会变得不必要。


1
投票

我绝对同意Impaler的表结构可以更好地避免这样的未来问题。但回到你的问题,我能找到的唯一方法就是得到两个派生表,其中一个由结果过滤。我有一个赢家,一个输球队。从那里我加入了桌子并提取必要的信息。希望这可以帮助。 http://sqlfiddle.com/#!18/967db/1/0

SELECT
    tb1.id
    ,tb1.team AS 'team 1'
    ,tb2.team AS 'team 2'
    ,tb1.result
From
(SELECT
    * 
FROM 
dbo.teams
WHERE result LIKE 'win') AS tb1
JOIN 
(SELECT
    * 
FROM 
dbo.teams
WHERE result LIKE 'loss') tb2 ON tb2.id = tb1.id
© www.soinside.com 2019 - 2024. All rights reserved.