在Access中合并两个表?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Access中合并两个表?相关的知识,希望对你有一定的参考价值。

我有两个表,我需要合并不同的数据。它们确实有相似之处,例如:订单号,名称,类型或产品。但他们也有单独的数据,如:订单日期和雕刻。

我会在Access中对合并表执行两个单独的追加查询吗?或者一个追加查询?或者只是将数据分开?

我是Access的新手,并试图找到解决此问题的最佳方法。

答案

将两个表合并为一个表完全违背了使用数据库的目的,并且最好在此时使用excel。您希望尽可能沿逻辑行拆分数据,以便您可以找到X先生为特定产品所做的所有订单。在这种情况下,您将需要为客户,订单,雕刻等设置单独的表格。

从设计的角度来看,最佳实践是将每个表共有的字段放在第三个“主”表中,然后创建从该表到现有表的关系,并删除已传输到主表的数据(除了主键,必须与主表通用)。

要创建主表,请使用“生成表”查询根据其中一个表生成主表,然后使用追加查询根据另一个表添加主表中可能不常见的任何产品。最后,删除每个表的查询将消除两个原始表中的冗余数据。

但是,我强烈建议您使用Microsoft的教程并下载NorthWind示例数据库,以便了解正确结构化数据库的外观。初学者的访问学习曲线非常陡峭,并且具有良好构建的示例数据库几乎是必需的。

备份您的数据库并使用它直到它结果正确。在知道自己在做什么之前,不要误以为使用实时数据。

另一答案

由于您在任一表上都有类似字段,因此请使用联合查询从两个表中获取订单号字段。就像是:

SELECT tbl_Delivery_Details.OrderNo
FROM tbl_Delivery_Details
GROUP BY tbl_Delivery_Details.OrderNo
UNION
SELECT tbl_Delivery_Header.[Order number]
FROM tbl_Delivery_Header 
GROUP BY tbl_Delivery_Header.[Order number];

这将从交货详细信息表和交货表头表中获取订单号,并将它们合并到一个列表中,每个订单号只有一个实例。保存查询。

然后,您可以在新查询中使用此查询。将2个表引入此查询并插入您需要的任一表中的字段。

当用户向表中添加记录时,它们将在下次运行时添加到联合选择查询中。

PB

另一答案

这取决于你想做什么。假设你有表A(有50条记录)和B(有75条)记录,两个表都有一个类似的列叫做OrderID

追加行:如果要通过组合A中的记录(行)和B中的记录(行)来创建总共125条记录的表,请运行以下两个查询:

查询1:

SELECT A.ORDER_NUMBER, A.TEXT_FIELD1 as DATA INTO C
FROM A;

查询2:

INSERT INTO C ( ORDER_NUMBER, DATA )
SELECT B.ORDER_NUMBER, B.TEXT_FIELD2
FROM B;

追加列:如果要创建一个包含75条记录的表,您要将A中的列附加到B中的列,请运行以下查询:

SELECT B.ORDER_NUMBER, A.TEXT_FIELD1, B.TEXT_FIELD2 INTO C
FROM A RIGHT JOIN B ON A.ORDER_NUMBER = B.ORDER_NUMBER;

...以类似的方式,您可以通过运行以下查询将B中的列追加到新表AC中的列,总共有50条记录:

SELECT A.ORDER_NUMBER, A.TEXT_FIELD1, B.TEXT_FIELD2 INTO C
FROM A LEFT JOIN B ON A.ORDER_NUMBER = B.ORDER_NUMBER;

以上是关于在Access中合并两个表?的主要内容,如果未能解决你的问题,请参考以下文章

Access中删除链接表,之后需要合并数据库

Microsoft Access 查询 - 将两个查询合并为一个

Microsoft Access - 合并具有相同字段的多个表

Ms access 合并多重访问文件表

将表从两个Access数据库合并到一个新的公用数据库中

我的代码似乎合并了数据集,但它没有更新到访问数据库