我正在为足球赔率设计一个数据库。
我有桌面赔率:
ID HomeID AwayID 赔率
一个桌面商店所有足球队名称呼叫团队:
ID 名称
我想要一个显示的查询:
ID HomeName AwayName 赔率
有没有办法像这样进行查询? 或者我需要将团队表拆分为2个表,如:HomeTeam,AwayTeam?
答案 0 :(得分:0)
一个名为team的表将会这样做。 home和away ID是引用团队表中主键ID的外键。
您提出的设计未正常化。你不应该重复数据,如果你有单独的主队和客场球队表,你就不得重复数据。
create table team (
id int not null,
name varchar(20) not null,
primary key(id)
);
create table odds (
home_id int not null,
away_id int not null,
odds varchar(20) not null,
primary key(home_id, away_id),
foreign key(home_id) references team(id),
foreign key(away_id) references team(id)
);
select h.name, a.name, o.odds
from odds as o
join team as h
join team as a
on o.away_id = a.id
on o.home_id = h.id
where h.name = 'home team name'
and a.name = 'away team name'