2017-12-26 4 views
0

Personテーブルと自分自身の値(@EmpId,)からEmployeeDeleteLogテーブルの値を同時に追加することはありません。SQL Serverで同時に別の値を持つ別のテーブルから選択された値を挿入する方法

これはEmployeeDeleteLogテーブルです:

CREATE TABLE EmployeeDeleteLog 
(
    IDdeleted int, 
    FirstName varchar(50) , 
    LastName varchar(100), 
    DeleteDate date, 
    Email varchar(100), 
    Fax varchar(12), 
    PostBox varchar(6), 
    Street varchar(60), 
    City varchar(60), 
    Province varchar(60), 
    Country varchar(100) NOT NULL 
) 

これはPersonテーブルです:私はこの種のものをしたいここで

create table Person 
(
    IdNo int primary key identity NOT NULL, 
    FirstName varchar(50) , 
    LastName varchar(100), 
    Gender char(1) NOT NULL, 
    Nationality varchar(50), 
    Email varchar(100) UNIQUE, 
    Fax varchar(12) UNIQUE, 
    PostBox varchar(6), 
    Street varchar(60), 
    City varchar(60), 
    Province varchar(60), 
    Country varchar(100) NOT NULL  
); 

INSERT INTO EmployeeDeleteLog 
VALUES(@EmpID, 
     (SELECT FirstName FROM Person WHERE IdNo = @EmpID), 
     (SELECT LastName FROM Person WHERE IdNo = @EmpID), 
     GETDATE(), 
     (SELECT Email FROM Person WHERE IdNo = @EmpID), 
     (SELECT Fax FROM Person WHERE IdNo = @EmpID), 
     (SELECT PostBox FROM Person WHERE IdNo = @EmpID), 
     (SELECT Street FROM Person WHERE IdNo = @EmpID), 
     (SELECT City FROM Person WHERE IdNo = @EmpID), 
     (SELECT Province FROM Person WHERE IdNo = @EmpID), 
     (SELECT Country FROM Person WHERE IdNo = @EmpID)) 

は教えてください可能な方法は?

答えて

0

はそれが単一ではMySQLを使用して作業している場合は、以下の簡単な解決策でなければなりません代わりに、値

INSERT INTO EmployeeDeleteLog 
(
    IDdeleted, 
    FirstName, 
    LastName, 
    DeleteDate, 
    Email, 
    Fax, 
    PostBox, 
    Street, 
    City, 
    Province, 
    Country 
) 
SELECT 
    IDdeleted = IdNo, 
    FirstName, 
    LastName, 
    DeleteDate = GETDATE(), 
    Email, 
    Fax, 
    PostBox, 
    Street, 
    City, 
    Province, 
    Country 
    FROM Person 
     WHERE [email protected] 
+0

あなたの答えが正しいか、必要なIDと@EmpIDを交換してください。できます。しかし、私はここに別の問題があります。上記のコードは完全なコードの一部です。上記のコードを使用して、 "EmployeeDeleteLog"テーブルにデータを挿入しました。 "EmployeeDeleteLog"テーブルの "IDdeleted"および "DeleteDate"列にはデータがあります。他のすべての列は "NULL"値を持ちます。 – rajitha

+0

これはFULL CODEで、ストアドプロシージャです: – rajitha

+0

ソースで値がnullであるためです –

0

を使用して指定する選択してください。

insert into EmployeeDeleteLog select @EmpID,FirstName,LastName,now(),Email,Fax,PostBox,Street,City,Province,Country from Person where [email protected]; 

注:

+0

いいえ私はMS SQLサーバーで作業しています。ご回答有難うございます。しかしここに私は別の問題があります。http://stackoverflow.com/questions/47981170/column-which-i-inserted-that-selected-values-from-another-table-are-null-why – rajitha

関連する問題