Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 访问将多个记录链接到同一记录_Sql_Vba_Ms Access - Fatal编程技术网

Sql 访问将多个记录链接到同一记录

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

我有一个关于Microsoft Access 2010的问题。我有以下表格:

顾客:

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
,但您的数据库不知道原始客户是什么,以及哪个是重复客户。这意味着您需要一个表单来提供这两个数字作为变量。此外:别忘了从客户表中删除重复的客户。为什么要创建新的重复客户?这可能是一个更好的主意,扼杀这一过程,并尽量减少它的发生。然后运行单个更新脚本来合并重复项,这样您就不必再担心它了。