2009-02-03 76 views
0

您好我有兩個數據表說:合併數據表列

表1:

name age 
---- --- 
Bob 40 

表2:

auto kids 
---- ---- 
3  3 

我要合併這兩個表得到的東西像

name age auto kids 
--- --- --- ---- 
Bob 40 3 3 

這可能嗎?我試過合併,但似乎沒有工作,謝謝。


我不能做你們建議的原因是因爲這兩個數據來自兩個不同的數據庫(Oracle,SQL)。我不能使用鏈接服務器,因爲速度不在那裏,有什麼你可以建議我,我可以編程?謝謝。

回答

0

合併將僅合併具有相似模式的表的數據。

您可能需要遍歷每個表並創建一個包含所有所需列的第三個表。

此外,我沒有看到任何一種關係的關鍵在這裏。如果你有這個,你可以建立一個數據關係,而不需要甚至合併它們。

0

這些表格如何關聯?它們之間的關鍵是什麼

select * from table1 t1 
join table2 t2 on <some magic where clause here> 
1

我打算加入前面兩個答案,希望能讓它更清晰,以防萬一它不是。什麼摳門和威脅想知道爲什麼你說的這兩個表不看是這樣的:


是PersonID(主鍵)
名字
姓氏
年齡

人口統計學
DemographicsID(主鍵)
PersonID(外鍵)
汽車
名 兒童

...如果兩個表看起來像這樣,那麼你可以通過添加一些列人表,以便它看起來像這樣將它們組合起來:


是PersonID (主鍵)

名字
年齡
汽車
兒童

...然後執行這樣的查詢:

UPDATE人員P,人口統計學ð
SET
    p.Autos = d.Autos
    p.Kids = d.Kids
WHERE
    p .PersonID = d.PersonID

在上面的示例中,Person和Demographics表中沒有PersonID字段,我們不知道哪個人口統計記錄與每個Person記錄關聯。您需要知道該信息才能創建組合表。

0

如果你想加入這兩個數據表 - 表1(名稱,年齡)和表2(汽車,孩子),無論列之間的任何連接,那麼我寧願使用Linq。在Linq中,您可以使用tabel的「rowIndex」連接兩個或多個表格。

嘗試以下VB.NET代碼:

Dim Table1, Table2, MergerTable As New DataTable 

    Dim rs = From c In Table1.AsEnumerable() 
     Join c1 In Table2.AsEnumerable() On Table1.Rows.IndexOf(c) Equals LicensDatum.Rows.IndexOf(c1) 
        Select New With 
        { 
         .a0 = c.Item(0), 
         .b0 = c.Item(0), 
         .a1 = c.Item(0), 
         .b1 = c1.Item(0) 
        } 

    MergerTable = New DataTable() 
    MergerTable.Columns.Add("name", GetType(String)) 
    MergerTable.Columns.Add("age", GetType(String)) 
    MergerTable.Columns.Add("auto", GetType(String)) 
    MergerTable.Columns.Add("kid", GetType(String)) 

    For Each row In rs.ToList() 
     Dim tableRow = MergerTable.NewRow() 
     tableRow.Item("name") = row.a0 
     tableRow.Item("age") = row.b0 
     tableRow.Item("auto") = row.a1 
     tableRow.Item("kid") = row.b1 
     MergerTable.Rows.Add(tableRow) 
    Next 

你可以,如果你想這樣做更多的類型安全合併同類型遊戲。