2016-07-07 56 views
-1

首先,我应该让你知道我是一个SQL新手 - 我从来没有真正使用过SQL Server,而我想做的事情一定是相当罕见或具有挑战性的,因为我一直无法在StackOverflow或Google上找到任何相关答案。如何将多个嵌套SQL表合并为一个?

我真的非常感谢你对此的帮助。与此同时,我自己目前正在努力提高自己的SQL知识并挖掘解决这个问题的方法 - 但让我们直接进入这一点

我目前拥有一台SQL Server(我通过SQL Server浏览管理工作室)与4个表。一切都是希腊语,所以没有必要写下真名。重点是表1中的每一行都与表2中的多行相关联,表2中的多行又与表3中的多行相关联,表3中的多行又与表4中的多行相关联

我的任务是执行人工智能/机器学习这个多实例多标签问题,但要做到这一点,我必须做到这一点,所以只有一个表包含所有表的所有信息。

SQL Server数据库结构:

  • 4表
  • 3。75 GB

表1:

  • 保留有关的任务的信息
  • 100列
  • 400000行
  • ID连接到工作台2的Research_ID

表2:

  • 每个任务都有多个子任务(这是该表保存)
  • 11列
  • 250万行
  • ID连接到表3的Task_Group_ID

表3:

  • 每个子任务都需要购买或更改或抛出东西远
  • 8列(在该表中保存)
  • 17000000行
  • Material_ID连接到表4的ID

表4:

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

我看到它的方式,也许它需要从底部到顶部阶段发生。

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

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

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

事情是..我如何将所有这些表组合成一个持续存在的表?

如果我忽视了分享任何所需信息,请通知我,我会尽快发布信息。

+1

你看过视图吗? http://www.tutorialspoint.com/sql/sql-using-views.htm – imtheman

+0

是的,但不幸的是,它只有信息太基础。我需要的更复杂 – N1h1l1sT

+0

你需要什么?忽略试图结合所有的表格,你究竟想要达到什么目的,你无法用目前的表格来完成这些表格? – ZLK

回答

0

您使用连接来获取信息。 Tehcnically,你可以这样做

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

这是开始的好地方,可以用实验的是你的一点点回答你的问题。

+0

哇 - 真的可以这么简单吗?当我带着数据进入计算机时,我会试试它,然后我会回来说明它是否有用。 非常感谢您提供的信息 – N1h1l1sT

+0

您可能需要尝试不同类型的连接,但这是最基本的。获得返回集后,然后确定您需要的列,并将*更改为列列表,如SELECT column1,column2。您应该使用Table1.Column,Table2.Column2等表格作为前缀。你可以别名表来减少输入的数量。 SELECT t1.Column1 FROM Table1 t1等 –

相关问题