2016-11-07 3 views
0

Ich versuche, ein Datenbankskript zu schreiben, um die Daten aus einer Auswahl einzufügen. aber jetzt gibt es eine Bearbeitung in der Datenbank und ich muss die gleichen Daten aber in zwei Tabellen anstelle von einem mit Fremdschlüssel einfügen.Einfügen von Daten in zwei Tabellen aus einer Auswahl in SQL Server 2016

Tables:

  • Membership: ID, Rolle, Kontoname, ...
  • MembershipMapper: ID, MembershipId, Rollen

ich dieses Skript geschrieben:

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

aber jetzt ist die Role in einer anderen Tabelle. Wie man es einfügt? Irgendwelche Ideen?

+0

Am Ende erwähnen Sie die 'Role' Spalte ist aus einer anderen Tabelle. Also meinen Sie, dass Sie Daten aus zwei Tabellen in einer Select-Anweisung in die Tabelle "Membership" und "MembershipMapper" einfügen? Wenn dies der Fall ist, benötigen Sie einen Beitritt. Wenn nicht, müssen Sie die Daten einfach separat in die Tabellen einfügen, da Sql Server das Einfügen mehrerer Tabellen in einer einzigen INSERT-Anweisung nicht unterstützt. –

Antwort

0

Sie werden wahrscheinlich brauchen eine 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

Ich habe Angst, dass Sie meine Frage falsch verstehen, ich möchte nicht in eine Tabelle aus zwei Selects einfügen, die ich in zwei Tabellen aus einer Auswahl einfügen möchte. –

+0

@SamySammour: Sie ** kann ** das nicht tun. Ein Insert geht immer nur in ** eine Tabelle **. –

+0

okay, was schlagen Sie vor? um jeden einzeln einzufügen? –

0

etwas Versuchen Sie, wie dieses

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

Ich habe Angst, dass Sie meine Frage falsch verstehen, ich möchte nicht in eine Tabelle aus zwei Auswahl einfügen, möchte ich in zwei Tabellen aus einer Auswahl einfügen –

0

dies möglicherweise?

INSERT INTO [server1]. [DBO]. [Mitgliedschaften] ([Role], [Kontoname] .....)

OUTPUT [ID], [Rolle] INTO MembershipMapper (MembershipId, Rolle)

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

hat nicht funktioniert, weil ich keine Rolle Spalte in der Mitgliedschaft habe, Ich habe es nur im MembershipMapper –

Verwandte Themen