2013-10-17 14 views
2

我需要一些T-SQL幫助。我們有一個跟蹤分配給每個員工的培訓要求的應用程序(例如CPR,急救等)。有一定的最低培訓要求,所有員工都必須分配,而且我的人力資源部門希望我能夠讓他們通過單擊按鈕爲所有人員分配最低培訓要求。因此,我創建了一個名爲TrainingRequirementsForAllEmployees的表,其中具有TrainingRequirementID的TrainingRequirements。如何使用兩個獨立表中的行對一個表執行大量SQL插入

我想爲TrainingRequirementsForAllEmployees中的每一行連接的Employees表中的每個員工插入行Employee_X_TrainingRequirements中的行。 爲了清晰起見,我將添加縮略表格模式。

第一個表是員工

EmployeeNumber PK char(6) 
EmployeeName  varchar(50) 

第二個表是TrainingRequirementsForAllEmployees

TrainingRequirementID  PK int 

三表(一個我需要插入到)是Employee_X_TrainingRequirements

TrainingRequirementID PK int 
EmployeeNumber   PK char(6) 

我不知道存儲過程應該如何實現我需要的結果。謝謝你的幫助。

回答

2

cross join當需要兩組數據的笛卡爾乘積時,算子是合適的。所以在你的存儲過程中你應該有這樣的東西:

insert into Employee_X_TrainingRequirements (TrainingRequirementID, EmployeeNumber) 
select r.TrainingRequirementID, e.EmployeeNumber 
from Employees e 
    cross join TrainingRequirementsForAllEmployees r 
where not exists (
    select 1 from Employee_X_TrainingRequirements 
    where TrainingRequirementID = r.TrainingRequirementID 
     and EmployeeNumber = e.EmployeeNumber 
    ) 
相關問題