在Access中合并两个表?

时间:2016-07-23 21:50:35

标签: ms-access

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

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

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

3 个答案:

答案 0 :(得分:0)

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

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

要创建主表,请使用Make Table查询根据您的某个表生成主表,然后使用追加查询在主表中添加可能不是两者共有的任何产品,基于另一个表。最后,删除每个表的查询将消除两个原始表中的冗余数据。

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

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

答案 1 :(得分:0)

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

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个表引入此查询并插入所需表中的字段。

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

PB

答案 2 :(得分:0)

这取决于你想做什么。假设您有表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中的列追加到新表A中的C列中,共有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;