Merge von 2 Tabellen mit Zusammensetzen von Tabellenspalten
Hallo MSDN-Forum,
Ich möchte 2 Tabellen vergleichen und je nach Resultat, eine Tabelle aktualisieren. Die Suche habe ich benutzt, konnte aber nichts änliches finden. Das ganze habe ich mir so vorgestellt:
Tabelle 1 temp.db:
ID, User, Domain
Tabelle 2 userliste:
ID, User, Domain
Tabelle 1 wird täglich aktualisiert. Tabelle 2 möchte ich gerne per MERGE mit Tabelle 1 vergleichen.
- Bei einem Match soll nichts passieren
- User in Tabelle 1 aber nicht in Tabelle 2 => User soll hinzugefügt in werden in Tabelle 2
- User in Tabelle 2 aber nicht in Tabelle 1 => User soll gelöscht werden in Tabelle 2
Zusätzlich muss beachtet werden (Da stehe ich im Moment an), dass ein User in mehreren Domains enthalten sein kann. Das heisst man müsste User+Domain miteinander vergleichen. Ausserdem müsste man diese Einträge die hinzugefügt werden sollten, wieder
aufsplitten, dass heisst z.B. UserXY DomainXY ergibt UserXY.DomainXY um die beiden Tabellen miteinander zu verlgeichen und dann wieder UserXY DomainXY um den Eintrag in der User Tabelle hinzuzufügen.
Ist sowas überhaupt möglich? Wenn ja, wie könnte man so etwas umsetzen?
Vielen Dank im Voraus,
FG
USE Test_Uservergleich;
GO
BEGIN TRAN;
SELECT (User + '.' + Domain) AS UserDomain1 From dbo.HostsList
SELECT (User + '.' + Domain) AS UserDomain2 From dbo.TempDB
MERGE dbo.HostsList AS T /*Target*/
USING dbo.TempDB AS S /*Source*/
ON (/*SELECT (User + '.' +Domain) AS UserDomain1 From dbo.HostsList)*/ UserDomain1 = /*(SELECT (User + '.' + Domain) AS UserDomain2 From dbo.TempDB*/UserDomain2)
WHEN NOT MATCHED BY TARGET
THEN INSERT(User, Domain, Status) VALUES(S.User, S.Domain, S.Status)
WHEN NOT MATCHED BY SOURCE
THEN DELETE
ROLLBACK TRAN;
GO