我正在建立一个足球数据库,并有一个团队桌和一个夹具表(当然还有其他许多......)。
单个夹具有两个记录,一个用于团队A,一个用于团队B.例如:
ID: 0
Team: Arsenal
Result: Win
ID 0
Team: Chelsea
Result: Loss
首先,这是最好的方法吗?或者一个灯具是否应该是一个包含两列两列的单一记录?
其次,在查询时如何组合这些数据。例如,如果我想返回涉及阿森纳的所有赛程给我:
ID: 0
Team 1: Arsenal
Team 2: Chelsea
Result: Win
只有正确方向的一点才会很棒。
真的很感激帮助。
谢谢!!
您显示的表结构看起来更像是数据传输格式。
对于长期存储和查询,您可能会将其分为两个表:
否则即使是简单的查询,例如你要问的问题,也会变得不必要。
我绝对同意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