Sql 访问将多个记录链接到同一记录
我有一个关于Microsoft Access 2010的问题。我有以下表格: 顾客:Sql 访问将多个记录链接到同一记录,sql,vba,ms-access,Sql,Vba,Ms Access,我有一个关于Microsoft Access 2010的问题。我有以下表格: 顾客: CustomerID | Name 123 John 243 Pete 567 John 订单: OrderID | CustomerID | Price 54332 123 80 43593 567 40 28493 243 60
CustomerID | Name
123 John
243 Pete
567 John
订单:
OrderID | CustomerID | Price
54332 123 80
43593 567 40
28493 243 60
58489 123 50
我的客户123和567实际上是相同的,因此我想将我的表订单更新为:
OrderID | CustomerID | Price
54332 123 80
43593 123 40
28493 243 60
58489 123 50
当然,这是一个简化版本。我必须不止一次这样做,所以有没有快速的方法?
提前谢谢 您可以创建映射表,并基于该映射表定期更新所有条目:
OldID | NewID
567 123
然后:
UPDATE Orders o INNER JOIN MappingTable m ON m.OldID = o.CustomerID
SET o.CustomerID = m.NewID;
DELETE *
FROM Customers c
WHERE EXISTS (SELECT 1 FROM MappingTable m WHERE m.OldID = c.CustomerID);
如果您填写映射表,然后执行这两个查询,所有订单都会得到调整,重复的客户也会被删除。那么,更新订单表的CustomerID字段。没什么大不了的。你说我必须不止一次这样做是什么意思?您需要更改多个不同的CustomerID,还是只需更改多个记录的一个?我指的是多个不同的CustomerID。。每周左右我都要做这个,因为通常会创建一个新客户,然后我想重定向所有相应的订单。我想知道是否有某种方法可以将123和567相互连接起来,因此access将它们视为相同的。您需要一个类似于
UPDATE Orders SET CustomerId=123的查询,其中CustomerId=567
,但您的数据库不知道原始客户是什么,以及哪个是重复客户。这意味着您需要一个表单来提供这两个数字作为变量。此外:别忘了从客户表中删除重复的客户。为什么要创建新的重复客户?这可能是一个更好的主意,扼杀这一过程,并尽量减少它的发生。然后运行单个更新脚本来合并重复项,这样您就不必再担心它了。