1

別のテーブルに移動し、他のテーブルに挿入された行の IdentityID に置き換える必要がある 3 つの列を持つテーブルがあります。

これが、私が使用しようとしている基本的なアイデアのSQLFiddleです。

CREATE TABLE RECORD 
(
  ID int,
  ObjectDetail_A int,
  ObjectDetail_B int,
  ObjectDetail_C int,
  ObjectDetailID int
)

CREATE TABLE OBJECTDETAIL
(
  ID int,
  ObjectDetail_A int,
  ObjectDetail_B int,
  ObjectDetail_C int
)

したがって、最終的に、フィールド ObjectDetail_A、ObjectDetail_B、および ObjectDetail_C は、データがテーブルに挿入されるときに、OBJECTDETAIL テーブルの ID に置き換えられます。

目的のテーブルに行を挿入し、ソース テーブルを目的の ID で更新する方法について少し混乱しています。

どんな助けでも大歓迎です、

ありがとう

4

4 に答える 4

0

A、B、および C フィールドが一意であるか、すべて同じ ObjectDetail.ID を使用して重複しても問題ない限り、それらをすべて挿入し、JOIN して新しい ID を取得できます。

INSERT INTO ObjectDetail
  ( ObjectDetail_A, ObjectDetail_B, ObjectDetail_C )
SELECT DISTINCT ObjectDetail_A, ObjectDetail_B, ObjectDetail_C
FROM Record

UPDATE Record
SET ObjectDetailID = d.ID
FROM Record r
INNER JOIN ObjectDetail d
  ON r.ObjectDetail_A = d.ObjectDetail_A
  AND r.ObjectDetail_B = d.ObjectDetail_B
  AND r.ObjectDetail_C = d.ObjectDetail_C
于 2013-04-23T18:36:42.553 に答える
0

私があなたの問題を理解している限り、2つのテーブルを作成する必要があります..

 CREATE TABLE OBJECTDETAIL
    (
      ObjectDetailID int
      ObjectDetail_A int,
      ObjectDetail_B int,
      ObjectDetail_C int,
    PRIMARY KEY (ObjectDetailID),

    )
    CREATE TABLE RECORD 
    (
      ID int,
      ObjectDetailID int, 
      CONSTRAINT fk_objectdetail FOREIGN KEY (ObjectDetailID) REFERENCES OBJECTDETAIL(ObjectDetailID)
    )

このようにして、最初に挿入してOBJECTDETAILから、挿入されたRECORDを使用してに挿入できますObjectDetailID

于 2013-04-23T18:37:59.053 に答える
0

OBJECTDETAIL.ID を自動インクリメント IDENTITY フィールドにします。

INSERT INTO OBJECTDETAIL
( SELECT DISTINCT 
ObjectDetail_A,
ObjectDetail_B,
ObjectDetail_C
FROM RECORD )

次に、RECORD.ObjectDetailID を更新します。

UPDATE R
SET R.ObjectDetailID = OD.ID
FROM RECORD R
JOIN OBJECTDETAIL OD
ON OD.ObjectDetail_A = R.ObjectDetail_A
AND OD.ObjectDetail_B = R.ObjectDetail_B
AND OD.ObjectDetail_C = R.ObjectDetail_C

RECORD.ObjectDetailID は外部キー フィールドである必要があり、RECORD.ObjectDetail_A などのフィールドはテーブルから削除する必要があります。

于 2013-04-23T18:38:34.080 に答える