繁体   English   中英

合并数据表列

[英]Merge Datatable columns

嗨,我有两个数据表说:

表格1:

name  age
----  ---
Bob   40

表2:

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

我想合并两个表以获得类似

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

这可能吗? 我尝试了合并,但是似乎无法正常工作,谢谢。


我无法执行您所建议的原因是因为这两个数据来自两个不同的数据库(Oracle,SQL)。 我无法使用链接服务器,因为速度还不存在,您是否可以建议我以编程方式进行操作? 谢谢。

我将尝试在前面的两个答案中添加一些内容,以期为您提供更清晰的信息。 Stingy和Menace想知道为什么您所说的两个表看起来不是这样:


PersonID(主键)
名字

年龄

客层
人口统计ID(主键)
PersonID(外键)
汽车
孩子们

...如果两个表看起来像这样,那么您可以通过在人员表中添加几列来合并它们,使其看起来像这样:


PersonID(主键)
名字

年龄
汽车
孩子们

...然后执行如下查询:

更新人员p,受众特征d

p。汽车= d。汽车
p。孩子= d。孩子
哪里
p.PersonID = d.PersonID

在上面的示例中,在“个人”和“人口统计”表中都没有“ PersonID”字段时,我们不知道哪个人口统计记录与每个“个人”记录相关联。 您需要知道这一点才能创建组合表。

合并将仅合并具有类似架构的表的数据。

您可能必须遍历每个表并制作一个包含所有所需列的第3个表。

另外,我在这里看不到任何关系键。 如果有的话,您可以建立数据关系,甚至不需要合并它们。

这些表如何关联? 他们之间的关键是什么

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

如果要联接这两个数据表-Table1(name,age)和Table2(auto,kids),无论列之间是否有联接,那么我都希望使用Linq。 在Linq中,您可以使用表的“ 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

如果您想进行合并并获得更多类型安全性,则可以使用这些类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM