2016-07-07 105 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等 –

相關問題