如何将多个嵌套SQL表合并为一个?

时间:2016-07-07 23:16:34

标签: sql sql-server

首先,我应该通过让你知道我是一个SQL新手 - 我之前从未真正使用过SQL Server而且我想要做的事情必须非常罕见或具有挑战性,因为我已经无法在StackOverflow或Google上找到任何相关答案。

我真的非常感谢你对此的帮助。与此同时,我本人正在努力提高我的SQL知识并找到解决这个问题的方法 - 但让我们直截了当地说明

我目前拥有一个带有4个表的SQL Server(我通过SQL Server Management Studio浏览)。所有的东西都是希腊语,所以写真实姓名毫无意义。关键是表1中的每一行都与表2中的多行相关联,而表2中的多行又与表3中的多行相关联,表3中的多行与表4中的多行相关联。

我的任务是在这个多实例多标签问题上执行AI /机器学习,但为此,我必须这样做,因此只有一个表包含所有表的所有信息。

SQL Server数据库结构:

  • 4桌
  • 3.75 GB

表1:

  • 保存有关任务的信息
  • 100列
  • 400,000行
  • ID已连接到表格2的Research_ID

表2:

  • 每个任务都有多个子任务(这是该表所持有的)
  • 11栏
  • 2,500,000行
  • ID已连接到表格3的Task_Group_ID

表3:

  • 每个子任务都要求购买或更改或丢弃(在此表中保存)
  • 8列
  • 17,000,000行
  • Material_ID已连接至表格4的ID

表4:

  • 每种材料都有一定的成本和东西(在此表中保存)
  • 12栏
  • 3,700行

我看待它的方式,也许它需要从下到上逐步发生。

对于表3中的每一行,表4中有许多相关的行;因此,表3中的每一行都插入一个新表中,与表4中与其关联的行数一样多。

这意味着很多信息将被复制,3.75GB将变得更大,但这是正常的,也是问题所需要的。

在表3和表4发生这种情况之后,表2中需要发生同样的事情,然后表1也是如此。请注意,每个表中的几列不得包含在最终表中。据我了解,唯一改变的是在“选择”而不是星号(*)中使用每个列的名称。最后,请记住我需要实际创建一个新表,因为它只需要发生一次,并且可以通过机器学习程序(WEKA,R等)和编程库(Accord.NET等)继续阅读几个月

问题是..如何将所有这些表合并到一个持续存在的表中?

如果我忽略了分享任何所需信息,请通知我,我会在看到此消息后立即这样做。

1 个答案:

答案 0 :(得分:0)

您使用联接来获取信息。在某种程度上,你可以做类似

的事情
SELECT * FROM Table1
JOIN Table2 ON Table1.Table2Id = Table1.ID
JOIN Table3 ON Table2.Table3Id = Table3.ID

等。但是,最终会出现重复的问题,因此您最好只选择所需的列。这里的连接是一种方式,并且将排除空值,因此您可能需要其他类型的连接。最多的信息来自交叉连接,但是它产生了所有相关表格的笛卡尔积,因此您有可能获得比您需要的更多的回馈。

这是一个解释T-SQL中的连接的链接:http://www.techonthenet.com/sql_server/joins.php

这是一个开始的好地方,可以通过一些实验回答你的问题。