2014-06-26 88 views
0

有兩個表格Inspector(Parent)和InspectorOfficeAccess(Child),我需要給國家(73,74)的檢查員進入辦公室(1,20 ,24,31,44)。根據其他表格插入多行(一對多)

檢查員表中有很多檢查員(超過100個),國家73和74.檢查員是否可以在InspectorOfficeAccess表中插入所有帶有一個查詢的檢查員?

第二屏幕截圖顯示最終結果應該如何。 InspectorOfficeAcess表是空的。

每個檢查器將被插入5次officesID(1,20,24,31,44),其中IN(73,74)

檢查員國家

enter image description here

ADDED

我曾經嘗試這樣做,到目前爲止

insert into InspectorOfficeAccess 
select i.inspectorid,o.Offices from Inspectors i 
cross join 
     (
     SELECT 1 AS Offices 
     UNION 
     SELECT 20 
     UNION 
     SELECT 24 
     UNION 
     SELECT 31 
     UNION 
     SELECT 44 
     ) o 
where i.CountryID IN (73,74) 
+0

是的,這是可能的。你到目前爲止嘗試了什麼? – TomT

+0

可能會通過officeID(1,20,24,31,44)的所有國家檢查員(73,74),並將其用於插入聲明....... – user1263981

回答

0

如果你必須選擇辦公室標識的其他表,則另一種方式做這將是:

Insert into InspectorOfficeAccess 
Select I.InspectorID,O.OfficeId 
from Inspector I 
Cross Join Office O 
where I.CountryId in (73,74) and O.OfficeId in (1,20,24,31,44); 

您可以檢查Demo here.

+0

很乾淨的例子:) – user1263981

0

試試這個

Insert into InspectorOfficeAcess 
Select InspectorOfficeAccessiD,i.InspectorID,oficeid 
from Inspector i 
cross apply(Select 1 union Select 20 union Select 24 union Select 31 union Select 44) d 
    where countryid in (73,74) 
+0

第二個屏幕截圖顯示最終結果應該看起來像。 InspectorOfficeAcess表是空的。 – user1263981

+0

第二屏幕截圖顯示三列; InspectorOfficeAccessiD,i.InspectorID,oficeid InspectorOfficeAccessiD是IDENTITY列,所以 i.InspectorID,oficeid是必需的。 – user1263981

+0

每個檢查員將插入5次與officesID(1,20,24,31,44),其中檢查國IN(73,74) – user1263981

0

這會針對你的情況的工作:

SELECT * 
FROM (SELECT InspectorID 
     FROM Inspector 
     WHERE countryid in (73,74)) Inspector 
,(VALUES (1),(20),(24),(31),(44)) 
AS InspectorOfficeAcess(InspectorOfficeAcessID)