我正在创建一个赛马数据数据库。数据从网络中删除,转换为excel,然后转换为MS SQL数据库中的单个表Race_Master
。
列包含以下数据:
date
pos
odds
btnby
going
horsename
trainername
jockeyname
当然,马匹,骑师和训练师的名字以低效且非关系的方式存储,有许多重复的条目。所以我创建了3个新表:
horse_name
trainer_name
jockey_name
这些表中没有重复项。
我现在如何创建一个新表来获取Race_Master
的数据,而不是使用马匹训练师和骑师的名字,参考那些相应的表格并使用他们的身份证作为参考?
答案 0 :(得分:1)
如果你已经创建了一个表,那么......
INSERT INTO NewTable (MasterID, JockeyID, TrainerID, HorseID)
SELECT M.MasterID, J.JockeyID, T.TrainerID , H.HorseID
FROM Race_Master M
INNER JOIN Jockeys J ON M.JockeyName = J.JockeyName
INNER JOIN Trainer T ON M.TrainerName = T.TrainerName
INNER JOIN Horse H ON M.HorseName = H.HorseName
如果您想动态创建表格
SELECT M.MasterID, J.JockeyID, T.TrainerID , H.HorseID
INTO New_Table
FROM Race_Master M
INNER JOIN Jockeys J ON M.JockeyName = J.JockeyName
INNER JOIN Trainer T ON M.TrainerName = T.TrainerName
INNER JOIN Horse H ON M.HorseName = H.HorseName
答案 1 :(得分:0)
创建表格:
create table dbo.Race(
ID int identity not null primary key
,JockeyID int references dbo.Jockey(ID)
,HorseID int references dbo.Horse(ID)
,TrainerID int references dbo.Trainer(ID)
)
go
并插入行:
with
jockey as (
select JockeyID
from dbo.Jockey j
join dbo.Race_Master
on Race_Master.JockeyName = j.JockeyName
),
trainer as (
select TrainerID
from dbo.Trainer t
join dbo.Race_Master
on Race_Master.TrainerName = t.TrainerName
),
horse as (
select HorseID
from dbo.HOrse h
join dbo.Race_Master
on Race_Master.HorseName = h.HorseName
)
insert Race(JockeyID,HorseID,TrainerID)
select jockey.ID,horse.ID,trainer.ID;