合并数据表列

时间:2009-02-03 16:18:03

标签: .net asp.net merge datatable

您好我有两个数据表说:

表1:

name  age
----  ---
Bob   40

表2:

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

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

的内容
name age auto kids
---  --- --- ----
Bob  40   3   3

这可能吗?我试过合并但它似乎没有用,谢谢。


我无法做你们建议的原因是因为这两个数据来自两个不同的数据库(Oracle,SQL)。我不能使用链接服务器,因为速度不存在,有什么你可以建议我,我可以编程吗?感谢。

4 个答案:

答案 0 :(得分:1)

我将尝试增加前两个答案,希望能让你更清楚,如果不是这样的话。什么Stingy和Menace想知道为什么你说的两张桌子看起来不像这样:

<强>人
PersonID(主键)
名字
姓氏
年龄

<强>人口统计学
DemographicsID(主键)
PersonID(外键)
汽车
孩子

...如果两个表看起来像这样,那么你可以通过在person表中添加几个列来组合它们,使它看起来像这样:

<强>人
PersonID(主键)
名字
姓氏
年龄
汽车
孩子

...然后执行这样的查询:

更新人员p,人口统计数据d
SET
p.Autos = d.Autos
p.Kids = d.Kids
WHERE
p.PersonID = d.PersonID

在上面的示例中,如果Person和Demographics表中没有PersonID字段,我们不知道哪个人口统计记录与每个Person记录相关联。您需要知道这是为了创建组合表。

答案 1 :(得分:0)

合并只会将表的数据与类似的架构组合在一起。

您可能需要遍历每个表并创建一个包含所需列的第3个表。

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

如果你想加入这两个数据表 - 表1(名称,年龄)和表2(自动,孩子),无论列之间是否有任何连接,我宁愿使用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

如果您希望使用更多类型安全进行合并,则可以使用这些类型。