2009-02-03 72 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 

你可以,如果你想这样做更多的类型安全合并同类型游戏。