您好我有两个数据表说:
表1:
name age
---- ---
Bob 40
表2:
auto kids
---- ----
3 3
我想合并两个表以获得类似
的内容name age auto kids
--- --- --- ----
Bob 40 3 3
这可能吗?我试过合并但它似乎没有用,谢谢。
我无法做你们建议的原因是因为这两个数据来自两个不同的数据库(Oracle,SQL)。我不能使用链接服务器,因为速度不存在,有什么你可以建议我,我可以编程吗?感谢。
答案 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
如果您希望使用更多类型安全进行合并,则可以使用这些类型。