2017-11-09 14 views
1

あるテーブルからデータを取り出し、複数のテーブルに挿入するクエリ/ SPを作成しようとしています。私はすべてが一時テーブルのように最初に置かれる1つのメインテーブルを持っています。従業員が確認されたとき、それは、必要に応じてのみ、一時テーブルからフィールドまたは2を必要とする複数のテーブルに分割されますザン重複のない複数(7)のテーブルに挿入

一時テーブル

CREATE TABLE Employee 
(
    userID INT IDENTITY(1,1) NOT NULL, 
    userName VARCHAR(50) NULL, 
    FirstName VARCHAR(50) NULL, 
    LastName VARCHAR(50) NUll, 
    UserPassWd VARCHAR(50) NULL, 
    EmailId VARCHAR(100) NULL 

    CONSTRAINT PK_Employee PRIMARY KEY (userID) 
) 

。以下にリストアップされているUserEmailテーブルは、テーブルの1つです。私は今それを1つのテーブルのために働かせようとしているし、私はちょうど挿入部分をコピーし、新しいテーブルにテーブル名と属性を変更すると思います。

DECLARE @EMAIL VARCHAR(100) 
DECLARE @USERID INT 

SELECT @USERID = userID 
     ,@EMAIL = EmailId 

FROM Employee 

WHERE userID = 1004 


INSERT INTO UserEmail 
    (
     EmailAddress  
     ,EmailTypeID  
     ,ExternalUserID 
     ,Active 
     ,CreatedByID 
     ,CreatedDate 
     ,UpdatedByID 
     ,UpdatedDate 

    ) 

SELECT @EMAIL -- Email Address 
    ,1   -- Email Type     
    ,1   -- ExternalUserID 
    ,1   -- Active 
    ,1   -- CreatedByID 
    ,CURRENT_TIMESTAMP -- CreatedDate 
    ,1 
    ,CURRENT_TIMESTAMP -- UpdatedDate 

FROM Employee X 

WHERE 1=1 
     AND X.userID = '####'-- INSERT USERID HERE for testing 

これはUserEmailテーブルにレコードを挿入しますが、私はので、私はこれを追加しようとしたが、それは私がそれをやりたいしない持ってカント重複ユーザーを作成します。

WHERE 1=1 AND NOT EXISTS( SELECT userID FROM Employee WHERE userID = 1004 )

どれガイダンスやヘルプははるかに高く評価されるだろう。ありがとうございました!

+2

方法を見直す

INSERT INTO UserEmail .... SELECT .... FROM .... WHERE .. AND NOT EXISTS (select 1 from UserEmail where EmailAddress = X.emailAddress) 

を延長存在する場合にのみ、NOTのようなあなたはUserEmailに挿入する場合は? –

+0

それはいいアイデアです。 – whisk

+0

私はあなたのスクリプトをたくさん理解していません。あるテーブルをあるテーブルから別のテーブルに挿入する必要があります。そして、単に 'UserEmail SELECTに挿入する 'を使わないのはなぜですか?なぜすべての変数? 'EmailId'は' Emplyee'テーブルにありません。どうすれば '@ EMAIL'にすることができますか?なぜ 'UserEmail'テーブルに' user'にリンクする属性がありませんか?また、なぜ日付を整数として保存するのですか?最後に、重複は何と考えますか?あなたは本当に 'EmailId'だけを挿入しています。残りはデフォルトです。本当に' EmailId'か 'EmailAddress'ですか? – HoneyBadger

答えて

関連する問題