我有两张桌子。
Payments
由一个自动编号字段组成 - PaymentID
。 `
PaymentsMain
包含两个字段 - MainID
和PaymentID
。它已加入Payments
上的PaymentsMain.PaymentID = Payments.PaymentID
。
如何将单个值插入PaymentsMain.MainID
,并将新的相应记录添加到Payments
,并将自动编号计算为Payments.PaymentID
,并将计算后的自动编号用作值`PaymentsMain.PaymentID'?
我想如果我手动生成PaymentID
- 基于MainID
添加到PaymentID
的初始最大值的某种运行总和,这是可能的,但我是想知道是否可以单独使用Autonumbers来完成。
修改
关系如下:
修改
如果可以指定Access应插入DEFAULT
的{{1}}值,那么这也可以。
答案 0 :(得分:0)
鉴于以下内容:
INSERT
语句的目标是已保存的查询,则可以从多个表中插入字段。第一步是创建一个保存的查询,如下所示(在本例中名为target
):
SELECT PaymentsMain.MainID, PaymentsMain.PaymentID, Payments.PaymentID
FROM PaymentsMain
INNER JOIN Payments ON PaymentsMain.PaymentID = Payments.PaymentID;
然后计算数据库中当前的最大自动编号(在本例中为1626)。
最后,INSERT
查询:
INSERT INTO target (MainID, PaymentsMain.PaymentID, Payments.PaymentID)
SELECT MainID, NewPaymentID, NewPaymentID
FROM (
SELECT Main.MainID, Sum(1) + 1626 AS NewPaymentID
FROM Main
LEFT JOIN Main AS m2 ON Main.MainID>=m2.MainID
GROUP BY Main.MainID
)
(这假设自动编号是连续的,而不是随机的。)