是否可以将3个表数据导入到一个表中

时间:2013-12-12 05:54:06

标签: sql sql-server sql-server-2008

是否可以将3个表数据导入到一个表中,如果可以,请向我们展示代码。

我有三个表并且要一起显示数据,我必须使用这些连接语句。

    select  *
    from [runners 2000-2005] 
    join races on races.race ID = [runners 2000-2005].race ID
    join results on results.race ID = [runners 2000-2005].race ID
    where 1=1 

我使用种族ID将所有表链接在一起,因为它是所有表中的公共列

但我认为如果我可以将TABLE结果和比赛中的数据导入到2000-2005的跑步者中会更好。制作一张大桌子。

thx我希望这能帮助Paul Im成为新手。

1 个答案:

答案 0 :(得分:0)

如上所述,它有点模糊,但你也JOINING表格颠倒了,因为我看不到[种族ID]列在[runners]表中,这意味着你有跑步者重复由于没有关系,结果与跑步者无关。我可能也是标记的方式,因为你没有提供一个模式,所以我对表模式采取自由并使用我期望的东西。

也许尝试这样的事情

CREATE TABLE [runners 2000-2005] ([Runner ID] INT, [First Name] NVARCHAR(200), [Last Name] NVARCHAR(200), [Other Details] NVARCHAR(500) )
CREATE TABLE [races] ([Race ID] INT, [Race Name] VARCHAR(200), [Race Location] VARCHAR(200))
CREATE TABLE [results] ([Race ID] INT, [Position] INT, [Runner ID] INT)

SELECT 
T1.[Race ID]
, T1.[Race Name]
, T1.[Race Location]

, T2.[Runner ID]
, T2.Position

, T3.[First Name]
, T3.[Last Name]
, T3.[Other Details]

INTO [all race details 2000-2005] /*Remove this line if you just want a query*/
FROM races AS T1
INNER JOIN results AS [T2] ON T2.[Race ID] = T1.[Race ID]
INNER JOIN [runners 2000-2005] AS [T3] ON T3.[Runner ID] = T2.[Runner ID]

SELECT * 
FROM [all race details 2000-2005]

使用表别名只是为了缩短查询,我发现首先从具有最常见信息的表中选择或位于层次结构之上更容易,我认为这是races表。

首先是比赛,然后是比赛的一些完成顺序,然后是比赛中跑步者的细节。

SELECT...INTO...FROM会创建一个新表,否则您可以CREATE TABLE...INSERT INTO TABLE.. SELECT取决于您。