Access Tabellen vergleichen, Abweichungen ausgeben
Liebe Gemeinde,
ist es mit einer Access Abfrage möglich, den Unterschied zweier Tabellen auszugeben(ohne VBA Code)?
Ich hätte jetzt mit einer "Inkonsistenzsuche" probiert, diese erkennt aber nur fehlende Objekte bzw. bräuchte ich dann 2 Abfragen zum "Gegencheck", was etwas umständlich ist.
Die Abfrage soll die Unterschiede zwischen einer konstanten und einer Variablen Tabelle(wöchentlicher SAP Import) ausgeben.
Ich muss damit prüfen, ob es neue Mitarbeiter bzw. ob es ausgeschiedene Mitarbeiter gibt, diese sollen dann in einer Abfrage erscheinen.
Hab ich da Chancen ohne VBA, bzw. wie würde der Code dazu aussehen?
Danke für eure Hilfe!
ist es mit einer Access Abfrage möglich, den Unterschied zweier Tabellen auszugeben(ohne VBA Code)?
Ich hätte jetzt mit einer "Inkonsistenzsuche" probiert, diese erkennt aber nur fehlende Objekte bzw. bräuchte ich dann 2 Abfragen zum "Gegencheck", was etwas umständlich ist.
Die Abfrage soll die Unterschiede zwischen einer konstanten und einer Variablen Tabelle(wöchentlicher SAP Import) ausgeben.
Ich muss damit prüfen, ob es neue Mitarbeiter bzw. ob es ausgeschiedene Mitarbeiter gibt, diese sollen dann in einer Abfrage erscheinen.
Hab ich da Chancen ohne VBA, bzw. wie würde der Code dazu aussehen?
Danke für eure Hilfe!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 300325
Url: https://administrator.de/forum/access-tabellen-vergleichen-abweichungen-ausgeben-300325.html
Ausgedruckt am: 09.05.2025 um 05:05 Uhr
6 Kommentare
Neuester Kommentar
Moin Dr.Cornwallis,
natürlich kannst du mit SQL-Mitteln zwei Tabellen übereinanderlegen und feststellen, was auf der einen, der anderen oder beiden übersteht. Für Mengen-Operationen ist diese Abfragesprache ja geschrieben worden.
Wenn du uns wenigstens noch einen klitzekleinen Hinweis gibst, wie denn eine Tabelle "Mitarbeiter" aufgebaut ist (was ist der identifizierende Schlüssel?) und was dein Ausgabeergebnis sein soll, dann können wir können wir mit dem Bregensturm beginnen.
Grüße
Biber
natürlich kannst du mit SQL-Mitteln zwei Tabellen übereinanderlegen und feststellen, was auf der einen, der anderen oder beiden übersteht. Für Mengen-Operationen ist diese Abfragesprache ja geschrieben worden.
Wenn du uns wenigstens noch einen klitzekleinen Hinweis gibst, wie denn eine Tabelle "Mitarbeiter" aufgebaut ist (was ist der identifizierende Schlüssel?) und was dein Ausgabeergebnis sein soll, dann können wir können wir mit dem Bregensturm beginnen.
Grüße
Biber
Moin Dr.Cornwallis,
in SQL gibt es viele Möglichkeiten, diese zwei Mengen zu vergleichen.
Bitte befrage auch mal eine Suchmaschine nach Begriffen wie UNION, JOINs, ALIASen oder dem IN-Operator.
Eine der vielen Möglichkeiten wäre
Grüße
Biber
in SQL gibt es viele Möglichkeiten, diese zwei Mengen zu vergleichen.
Bitte befrage auch mal eine Suchmaschine nach Begriffen wie UNION, JOINs, ALIASen oder dem IN-Operator.
Eine der vielen Möglichkeiten wäre
SELECT alt.Personalnummer , alt.Vorname, alt.Nachname, "nicht mehr dabei" as Status
FROM Personal AS alt
LEFT JOIN deinDailyExcel AS neu on alt.PeronalNummer=neu.Personalnummer
WHERE neu.Personalnummer IS NULL
UNION ALL
SELECT neu,Personalnummer , neu.Vorname, neu.Nachname, "neu dabei" as Status
FROM deinDailyExcel AS neu
LEFT JOIN Personal AS alt on alt.PeronalNummer=neu.Personalnummer
WHERE alt.Personalnummer IS NULL
Grüße
Biber
Moin Dr. Cornwallis,
mit meiner Skizze kannst du erstmal bei jeder handelsüblichen Suchmaschine nach den neuen Vokabeln suchen, um eine ungefähre Ahnung zu bekommen, wie dieses SQL-Zeugs wohl tickt.
Wenn du dann nach einer Viertelstunde meinst "Aha - jezz' versteh' ich, watt der Biber da machen will..."
-> dann kannst du das angepasste Statement (deine Tabellen heissen vielleicht etwas anders und wie ich SAP kenne, heissen "Vorname" und "Name" bestimmt "VNAM" und NNAM") auf alles loslassen, was ein paar Brocken SQL spricht oder versteht.
Z.B. auf dein Access..
Grüße
Biber
P.S. Die Abkürzung SAP heisst auch nicht Software aus Pakistan.
Pakistani sprechen besseres Deutsch.
mit meiner Skizze kannst du erstmal bei jeder handelsüblichen Suchmaschine nach den neuen Vokabeln suchen, um eine ungefähre Ahnung zu bekommen, wie dieses SQL-Zeugs wohl tickt.
Wenn du dann nach einer Viertelstunde meinst "Aha - jezz' versteh' ich, watt der Biber da machen will..."
-> dann kannst du das angepasste Statement (deine Tabellen heissen vielleicht etwas anders und wie ich SAP kenne, heissen "Vorname" und "Name" bestimmt "VNAM" und NNAM") auf alles loslassen, was ein paar Brocken SQL spricht oder versteht.
Z.B. auf dein Access..
Grüße
Biber
P.S. Die Abkürzung SAP heisst auch nicht Software aus Pakistan.
Pakistani sprechen besseres Deutsch.
Also zunächst mal wäre ein anderer SQL Server (MS SQL, Oracle oder PostgreSQL) besser in der Lage Tabellen zu vergleichen, da diese z.B. EXCEPT anbieten. EXCEPT vergleicht bei SQL den vollständigen Datensatz. Ist auch nur ein Atribut unterschiedlich wird der ganze Datensatz angezeigt.
Das kann man natürlich nachbauen, hier mal ein Beispiel:
entspricht
Sobald aber mehr Spalten zum Vergleich hinzukommen müssen diese auch in der JOIN-Bedingung aufgeführt werden, das kann sehr lästig sein. Bibers Beispiel zeigt dir zunächst mal nur Datensätze, die in der einen Tabelle neu sind und Datensätze, die in der neuen Tabelle nicht mehr vorhanden sind. Das kann aber nur ein Anfang sein denn eine Veränderung im neuen Datensatz wäre noch nicht dabei.
Du solltest dir zunächst klar sein welches Format deine Änderungsübersicht haben soll / muss. Soll die ganze Zeile ausgegeben werden wenn ein Atribut anders ist dann lohnt sich eventuell der Einsatz eines richtigen SQL Servers. Wenn wirklich jedes Atribut das sich ändert einzeln genannt werden soll, ist sowieso Fleißarbeit angesagt.
Das kann man natürlich nachbauen, hier mal ein Beispiel:
SELECT A.x FROM A
EXCEPT
SELECT B.x FROM B
SELECT A.x FROM A
LEFT JOIN B
ON A.x = B.x
WHERE B.x IS NULL
Du solltest dir zunächst klar sein welches Format deine Änderungsübersicht haben soll / muss. Soll die ganze Zeile ausgegeben werden wenn ein Atribut anders ist dann lohnt sich eventuell der Einsatz eines richtigen SQL Servers. Wenn wirklich jedes Atribut das sich ändert einzeln genannt werden soll, ist sowieso Fleißarbeit angesagt.