2016-11-07 15 views
0

selectからのデータを挿入するデータベーススクリプトを作成しようとしています。 しかし、データベースに編集があり、同じデータを外部キーを使用する代わりに2つのテーブルに挿入する必要があります。SQL Serverで1つの選択肢から2つのテーブルにデータを挿入する2016

テーブル:

  • Membership:ID、役割、アカウント名、...
  • MembershipMapper:同上、MembershipId、役割

が、私はこのスクリプトを書いた:

INSERT INTO [server1].[dbo].[Memberships] ([Role], [AccountName] .....) 
    SELECT 
     [Role], 
     [AccountName], 
     ...... 
    FROM 
     [server2].[dbo].[Memberships] 

しかし、Roleは別のテーブルにあります。それを挿入するには?何か案は?

+0

最後に、 'Role'列は別の表のものです。つまり、あるselect文の2つのテーブルのデータを 'Membership'テーブルと' MembershipMapper'テーブルに挿入するということですか?そうであれば、参加が必要です。そうでない場合は、Sql Serverは単一のINSERT文で複数テーブルの挿入をサポートしないため、データをテーブルに個別に挿入するだけで済みます。 –

答えて

0

あなたはJOINがおそらく必要があります

INSERT INTO [server1].[dbo].[Memberships] ([Role], [AccountName] .....) 
    SELECT 
     s.[Role], 
     m.[AccountName], 
     ...... 
    FROM 
     [server2].[dbo].[Memberships] m 
    INNER JOIN 
     [server2].[dbo].[SomeOtherTable] s ON m.ID = s.ID -- or whatever links the two tables..... 
+0

私はあなたが私の質問を誤解していることを恐れている、私は2つの選択から1つのテーブルに挿入したくない、私は1つの選択から2つのテーブルに挿入したい。 –

+0

@SamySammour:あなたは**できません**。インサートは常に**一つのテーブルにのみ**入ります。 –

+0

あなたの提案は大丈夫ですか?それぞれを単独で挿入するには? –

0

は、おそらくこの

INSERT INTO [server1].[dbo].[Memberships] 
      ([Role] 
      ,[AccountName] 
      .....) 

SELECT memmap.[Role] 
     ,mem.[AccountName] 
     ...... 
    FROM [server2].[dbo].[Memberships] AS mem 
    JOIN [server2].[dbo].[MembershipMapper] AS memmap 
    ON mem.id = memmap.MembershipId 
+0

私はあなたが私の質問を誤解していることを恐れている、私は2つの選択肢から1つのテーブルに挿入したくない、私は1つの選択から2つのテーブルに挿入したい –

0

このような何かを試してみてください?

INSERT INTO [SERVER1]。[DBO] [メンバーシップ]([役割]、[アカウント名] .....)

OUTPUT [ID]、[役割] MembershipMapper(MembershipId、役割)INTO

SELECT 
    [Role], 
    [AccountName], 
    ...... 
FROM 
    [server2].[dbo].[Memberships] 
+0

私はメンバーシップの役割の列を持っていないため、私はMembershipMapperでしか持っていません –

関連する問題