首先,我应该通过让你知道我是一个SQL新手 - 我之前从未真正使用过SQL Server而且我想要做的事情必须非常罕见或具有挑战性,因为我已经无法在StackOverflow或Google上找到任何相关答案。
我真的非常感谢你对此的帮助。与此同时,我本人正在努力提高我的SQL知识并找到解决这个问题的方法 - 但让我们直截了当地说明
我目前拥有一个带有4个表的SQL Server(我通过SQL Server Management Studio浏览)。所有的东西都是希腊语,所以写真实姓名毫无意义。关键是表1中的每一行都与表2中的多行相关联,而表2中的多行又与表3中的多行相关联,表3中的多行与表4中的多行相关联。
我的任务是在这个多实例多标签问题上执行AI /机器学习,但为此,我必须这样做,因此只有一个表包含所有表的所有信息。
SQL Server数据库结构:
表1:
ID
已连接到表格2的Research_ID
表2:
ID
已连接到表格3的Task_Group_ID
表3:
Material_ID
已连接至表格4的ID
表4:
我看待它的方式,也许它需要从下到上逐步发生。
对于表3中的每一行,表4中有许多相关的行;因此,表3中的每一行都插入一个新表中,与表4中与其关联的行数一样多。
这意味着很多信息将被复制,3.75GB将变得更大,但这是正常的,也是问题所需要的。
在表3和表4发生这种情况之后,表2中需要发生同样的事情,然后表1也是如此。请注意,每个表中的几列不得包含在最终表中。据我了解,唯一改变的是在“选择”而不是星号(*)中使用每个列的名称。最后,请记住我需要实际创建一个新表,因为它只需要发生一次,并且可以通过机器学习程序(WEKA,R等)和编程库(Accord.NET等)继续阅读几个月
问题是..如何将所有这些表合并到一个持续存在的表中?
如果我忽略了分享任何所需信息,请通知我,我会在看到此消息后立即这样做。
答案 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
这是一个开始的好地方,可以通过一些实验回答你的问题。