SQL Server MERGE + Beitreten zu anderen Tabellen

8

Ich verwende die MERGE-Anweisung innerhalb eines Datenbankprojekts, um Referenzdaten aus einer statischen Wertemenge zu füllen, z. B. die folgenden:

%Vor%

Das Problem tritt auf, wenn ich die sekundäre Tabelle basierend auf Inhalt in anderen Tabellen auffüllen möchte. Zum Beispiel enthält meine UserPermission-Tabelle die Benutzer-ID und die Rollen-ID und ich möchte, dass mein statischer Wert auf etwas wie ('[email protected]', 'Admin') gesetzt ist und ich kann mich mit Benutzer und Erlaubnis verbinden ID-Werte für INSERT. Ich bin mir nicht sicher, wo ich das machen soll ...

Bearbeiten:

Benutzertabelle (ID, Benutzername) 1, John Smith 2, Mark Wahlerg

Rollentabelle (ID, Rollenname) 1, Administrator 2, Benutzer 3, Gast

Benutzerrollen-Tabelle (Benutzer-ID, Rollen-ID)

Ich möchte, dass die SQL für die MERGE-Anweisung die User-Role-Tabelle so anpasst, dass ich etwas wie:

angeben kann %Vor%

und es wird beitreten, um die IDs zu bestimmen, fügen Sie die Kombinationen ein, die nicht existieren (und löschen Sie vielleicht diejenigen, die das tun, aber nicht in der MERGE sind.

Lösung:

%Vor%     
Rich 09.05.2012, 19:30
quelle

1 Antwort

8

Merge unterstützt CTEs, vielleicht können Sie dies als Quelle verwenden, indem Sie Ihre statischen Daten kombinieren und Joins innerhalb des CTE durchführen.

    
Chris Moutray 09.05.2012, 19:58
quelle