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