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

时间:2018-05-23 18:25:11

标签: sql database ms-access

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

单个灯具有两个记录,一个用于A队,一个用于B队。例如:

ID: 0
Team: Arsenal
Result: Win

ID 0
Team: Chelsea
Result: Loss

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

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

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

正确的方向上的一点将是辉煌的。

非常感谢帮助。

谢谢!

2 个答案:

答案 0 :(得分:1)

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

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

  • 队:
    • ID
    • 名称
  • 匹配:
    • match_id
    • local_team_id
    • visitor_team_id
    • 结果

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

答案 1 :(得分: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