Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 从mssql中的1个表创建3个表_Sql Server - Fatal编程技术网

Sql server 从mssql中的1个表创建3个表

Sql server 从mssql中的1个表创建3个表,sql-server,Sql Server,我正在创建一个赛马数据数据库。数据从网络中刮取,放入excel,然后放入MS SQL数据库中的单个表Race\u Master 这些列包括以下数据: date pos odds btnby going horsename trainername jockeyname 当然,马、骑师和驯马师的名字是以一种低效和非关系的方式存储的,有许多重复的条目。因此,我创建了3个新表: horse_name trainer_name jockey_name 这些表中没有重复项 我现在如何创建一个新表,该表将

我正在创建一个赛马数据数据库。数据从网络中刮取,放入excel,然后放入MS SQL数据库中的单个表
Race\u Master

这些列包括以下数据:

date
pos
odds
btnby
going
horsename
trainername
jockeyname
当然,马、骑师和驯马师的名字是以一种低效和非关系的方式存储的,有许多重复的条目。因此,我创建了3个新表:

horse_name
trainer_name
jockey_name
这些表中没有重复项

我现在如何创建一个新表,该表将从
Race\u Master
获取数据,而不是使用驯马师和骑师的姓名,而是参考相应的表并使用其id作为参考

要创建表格:

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;

如果您已经创建了一个表,那么

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

您的问题“如何创建…?”或“如何插入…?”对于延迟的响应,是否表示抱歉。感谢所有回复的人