我有两个表,我需要合并不同的数据。它们确实有相似之处,例如:订单号,名称,类型或产品。但他们也有单独的数据,如:订单日期和雕刻。
我会在Access中对合并表执行两个单独的追加查询吗?或者一个追加查询?或者只是将数据分开?
我是Access的新手,并试图找到解决此问题的最佳方法。
答案 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;