2011-08-09 25 views
1

我有表1對多的關係兩者之間......說組織成員從表中選擇和插入新記錄到另一個表,但改變一些值

我想創建基於現有的新組織一個(ID 111)並複製所有成員,但將它們與新創建的組織關聯。

一些僞代碼..

-- Just create a new organisation based on the new name and address 
-- passed to the proc. 
Insert into Organisation (newOrganisationName, newAddress) 
returning Organisation_ID into v_orgID; 

所以現在我有新的組織ID在v_orgID的說,999回來,我想成員從現有的組織複製與要說111的ID和關聯這些與新的OrgID。

什麼是實現這一目標的最佳途徑......我應該循環並插入或可我使用INSERT INTO - 從方法選擇

INSERT INTO Members (OrganisationID, Membername, MemberAddress) 
(SELECT v_orgID, MemberName, MemberAddress FROM Member 
WHERE OrganisationId = 111) 

感謝米克

+1

插入/選擇就是做最好的辦法,會更快,使用更少的資源,並simplier了。 –

+0

感謝凱文......只是這樣做,它工作的一種享受......只是沒有把變量放進去,但決定吸了它,看看:-) – Doiremik

回答

7

只需插入v_orgID進入查詢爲數字:

INSERT INTO ... (SELECT 999, MemberName, MemberAddress FROM Member WHERE OrganisationId = 111) 

對於999作爲新的OrganizationId。

+0

+1正確!歡迎來到SO! – Bohemian

+0

感謝紳士......現在全部排序:-) – Doiremik

3

使用INSERT/SELECT,更改值:

INSERT INTO Members (OrganisationID, Membername, MemberAddress) 
SELECT 999, MemberName, MemberAddress FROM Member 
WHERE OrganisationId = 111 
+0

對不起,男士,但只是爲了澄清......我沒有硬編碼的999作爲你的例子,但使用變量替代......在 INSERT INTO Members(OrganisationID, Membername,MemberAddress)(SELECT v_orgID,MemberName,MemberAddress FROM Member WHERE OrganisationId = 111) 關於Mick – Doiremik

相關問題