Benutzer mit den meisten Antworten
Daten vergleichen

Frage
-
Hallo.
Ich habe 2 Programme welche Synchronisiert werden sollen.
Daher kommt es vor, dass in beiden programmen mehrere neue Kunden angelegt wurden (Nie die selben, dass soll ja die Synchro erledigen).
Ich lese also aus beiden Programmen sämtliche Kundennummern aus und speicher diese in 2 versch. DataTable.
DataTable1 hat z.B. 4000 Kundennummern und DataTable2 hat 4003 Kundennummern.
Die Reinfolge ist durcheinander!
Nun müssen beide Tabellen auf einen SQL Server geladen werden um dort vergleichen zu können welche Kundennummern vorhanden und welche noch nicht vorhanden sind um so neue Kunden eines Programmes in dem anderen anlegen zu können.
Wie jedoch sieht die Gegenüberstellung aus?
Brauche ich eine oder 2 Tabellen für den Vergleich?
Angenommen ich nehme nur 1 Tabelle:
ID | cl_kundennr | crm_kundennr
0 | 1 | ?
1 | 4 | ?
2 | 22 | ?
Ich weiß nun nicht wie ich die crm_kundennr`n zuordnen kann sodass falls es die crm_kundennr schon als cl_kundennr existiert, so wird die crm_kundennr neben der gleichen cl_kundennr gespeichert (Später folgen mehrere Daten als nur die Kundennr, aber die Kundennr soll die "Verknüpfung" sein) Existiert die crm_kundennr nicht, so wird ein neuer Datensatz angelegt indem die cl_kundennr nun fehlt.
Die Datensätze wo eine der Kundennr fehlt, werde ich synchronisieren damit in beiden Programmen der Kunde angelegt ist.
Wie kann man soetwas bewerkstelligen?
Ein einfacher datatable WriteToServer Dump ist wohl nicht möglich.
Hat jemand Rat?
Vielen Dank
Antworten
-
IF OBJECT_ID('dbo.Table1','U') IS NULL BEGIN -- Ertellt Tabelle 1 CREATE TABLE Table1 (CustomerNumber char(3), Name varchar(56)); --Speichert Kundendaten in die Tabelle 1 INSERT INTO dbo.Table1(CustomerNumber, Name) VALUES('100','ABC-AG'), ('200','CDE-AG') END IF OBJECT_ID('dbo.Table2','U') IS NULL BEGIN -- Ertellt Tabelle 2 CREATE TABLE Table2 (CustomerNumber char(3), Name varchar(56)); --Speichert Kundendaten in die Tabelle 2 INSERT INTO dbo.Table2(CustomerNumber, Name) VALUES('100','ABC-AG'), ('300','FGH-AG') END --Zeigt synchronisierte Datenmenge an SELECT CustomerNumber, Name FROM dbo.Table1 EXCEPT SELECT CustomerNumber, Name FROM dbo.Table2 UNION ALL SELECT CustomerNumber, Name FROM dbo.Table2 --Vervollständigt die Tabelle 1 INSERT INTO dbo.Table1 SELECT CustomerNumber, Name FROM dbo.Table2 EXCEPT SELECT CustomerNumber, Name FROM dbo.Table1 --Vervollständigt die Tabelle 2 INSERT INTO dbo.Table2 SELECT CustomerNumber, Name FROM dbo.Table1 EXCEPT SELECT CustomerNumber, Name FROM dbo.Table2 --Zeigt synchronisierte Tabellen an SELECT * FROM dbo.Table1 ORDER by CustomerNumber SELECT * FROM dbo.Table2 ORDER by CustomerNumber --Lösch die beide Tabellen IF OBJECT_ID('dbo.Table1','U') IS NOT NULL DROP TABLE dbo.Table1; IF OBJECT_ID('dbo.Table2','U') IS NOT NULL DROP TABLE dbo.Table2;
- Bearbeitet Yury Iwtschenko Donnerstag, 22. April 2010 20:52 korrektur
- Als Antwort vorgeschlagen Yury Iwtschenko Donnerstag, 22. April 2010 20:53
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 28. April 2010 10:12
-
Hallo. Ich kann das gewünschte Ziel über die Methode mit 2 Tabellen erreichen. Dennoch vielen Dank. PS: Weiß jemand wie ich den "nicht übereinstimmenden rest" einer Abfrage, abfragen kann? Danke
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Mittwoch, 7. April 2010 14:46
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 28. April 2010 10:12
Alle Antworten
-
Hallo. Ich kann das gewünschte Ziel über die Methode mit 2 Tabellen erreichen. Dennoch vielen Dank. PS: Weiß jemand wie ich den "nicht übereinstimmenden rest" einer Abfrage, abfragen kann? Danke
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Mittwoch, 7. April 2010 14:46
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 28. April 2010 10:12
-
IF OBJECT_ID('dbo.Table1','U') IS NULL BEGIN -- Ertellt Tabelle 1 CREATE TABLE Table1 (CustomerNumber char(3), Name varchar(56)); --Speichert Kundendaten in die Tabelle 1 INSERT INTO dbo.Table1(CustomerNumber, Name) VALUES('100','ABC-AG'), ('200','CDE-AG') END IF OBJECT_ID('dbo.Table2','U') IS NULL BEGIN -- Ertellt Tabelle 2 CREATE TABLE Table2 (CustomerNumber char(3), Name varchar(56)); --Speichert Kundendaten in die Tabelle 2 INSERT INTO dbo.Table2(CustomerNumber, Name) VALUES('100','ABC-AG'), ('300','FGH-AG') END --Zeigt synchronisierte Datenmenge an SELECT CustomerNumber, Name FROM dbo.Table1 EXCEPT SELECT CustomerNumber, Name FROM dbo.Table2 UNION ALL SELECT CustomerNumber, Name FROM dbo.Table2 --Vervollständigt die Tabelle 1 INSERT INTO dbo.Table1 SELECT CustomerNumber, Name FROM dbo.Table2 EXCEPT SELECT CustomerNumber, Name FROM dbo.Table1 --Vervollständigt die Tabelle 2 INSERT INTO dbo.Table2 SELECT CustomerNumber, Name FROM dbo.Table1 EXCEPT SELECT CustomerNumber, Name FROM dbo.Table2 --Zeigt synchronisierte Tabellen an SELECT * FROM dbo.Table1 ORDER by CustomerNumber SELECT * FROM dbo.Table2 ORDER by CustomerNumber --Lösch die beide Tabellen IF OBJECT_ID('dbo.Table1','U') IS NOT NULL DROP TABLE dbo.Table1; IF OBJECT_ID('dbo.Table2','U') IS NOT NULL DROP TABLE dbo.Table2;
- Bearbeitet Yury Iwtschenko Donnerstag, 22. April 2010 20:52 korrektur
- Als Antwort vorgeschlagen Yury Iwtschenko Donnerstag, 22. April 2010 20:53
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 28. April 2010 10:12