2

私は2つのテーブルを持っています。

Payments単一の Autonumber フィールドで構成されます - PaymentID。`

PaymentsMainMainIDには、 との 2 つのフィールドが含まれていますPaymentID。に結合さPaymentsPaymentsMain.PaymentID = Payments.PaymentIDます。

に単一の値を挿入し、PaymentsMain.MainID対応する新しいレコードを に追加しPayments、計算されたオートナンバーを に追加し、Payments.PaymentIDその計算されたオートナンバーを「PaymentsMain.PaymentID」の値として使用するにはどうすればよいですか?

-の初期最大値に追加さPaymentIDれた s に基づいて、何らかの実行中の合計を手動で生成すると、これが可能になると思いますが、自動番号のみを使用してこれを実行できるかどうか疑問に思っています。MainIDPaymentID

編集

関係は次のとおりです。関係

編集

DEFAULTAccess が の値を挿入するように指定できる場合はPaymentID、それも機能します。

4

1 に答える 1

1

以下を考えると:

  • INSERTステートメントのターゲットが保存されたクエリである場合、複数のテーブルからフィールドに挿入することができます。
  • Autonumber フィールドを挿入できます。
  • SQL で Autonumber シーケンスをシミュレートすることができます。

最初のステップは、次のように保存されたクエリを作成することです (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
)

(これは、Autonumber がランダムではなく連続していることを前提としています)。

于 2013-03-04T23:05:42.147 に答える