0

您好我有两个数据表说:

表格1:

name  age
----  ---
Bob   40

表 2:

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

我想合并这两个表以获得类似的东西

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

这可能吗?我尝试了合并,但它似乎不起作用,谢谢。


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

4

4 回答 4

1

我将尝试添加前两个答案,以期让您更清楚,以防万一。什么 Stingy 和 Menace 想知道为什么你说的两张桌子看起来不像这样:

Person
PersonID(主键)
FirstName
LastName
Age

Demographics
DemographicsID(主键)
PersonID(外键)
Autos
Kids

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

Person
PersonID(主键)
FirstName
LastName
Age
Autos
Kids

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

UPDATE Person p, Demographics d
SET
  p.Autos = d.Autos
  p.Kids = d.Kids
WHERE
  p.PersonID = d.PersonID

在上面的示例中,如果没有 Person 和 Demographics 表中的 PersonID 字段,我们不知道哪个 Demographic 记录与每个 Person 记录相关联。您需要知道这一点才能创建组合表。

于 2009-02-03T16:48:57.860 回答
0

合并只会合并具有相似架构的表的数据。

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

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

于 2009-02-03T16:21:13.563 回答
0

这些表有什么关系?他们之间的关键是什么

select * from table1 t1
join table2 t2 on  <some magic where clause here>
于 2009-02-03T16:21:53.843 回答
0

如果您想加入这两个数据表 - 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

如果您想以更高的类型安全性进行此合并,则可以使用这些类型。

于 2011-04-29T13:30:36.037 回答