Geänderte Datensätze abfragen

Hallo Wissende,

ich bräuchte da mal Hilfe bei einer Access-Abfrage. Ich habe zwei Tabellen (Tab1 und Tab2), die folgendermaßen aufgebaut sind:

Tab1

Spalte A | Spalte B

Dazu gehören die Werte:

0815 | Banane
4711 | Orange
1234 | Apfel
2345 | Apfel
3456 |
4567 | Banane

Tab2

Spalte A | Spalte B

Dazu gehören die Werte:

0815 | Apfel
4711 |
1234 | Orange
2345 | Apfel
3456 | Birne
4567 | Banane

Ich möchte nun beide Tabellen über Spalte A miteinander verknüpfen. Als Abfrageergebnis hätte ich gerne die Datensätze, bei denen sich in Spalte B eine Änderung von Tabelle 1 zu Tabelle 2 ergeben hat. Ausgegeben werden soll folgende Tabelle:

Spalte A | Spalte B aus Tabelle 1 | Spalte B aus Tabelle 2

Mit folgenden Ergebnissen:

0815 | Banane | Apfel
4711 | Orange |
1234 | Apfel | Orange
3456 | | Birne

Die Datensätze 2345 und 4567 werden nicht angezeigt, da in Tab1 und Tab2 die Datensätze identisch sind.

Wie bekomme ich eine entsprechende Abfrage hin? Ich hab zwar eine SQL-Abfrage, die mir Änderungen ausgibt, darin sind aber nicht die leeren Felder enthalten. Insofern haut das irgendwie nicht hin.

Für jegliche Form der Hilfe vielen Dank im voraus!

Grüße

Marcus

Hallo Marcus,

Ich hab zwar eine SQL-Abfrage, die mir Änderungen ausgibt, darin sind aber nicht die leeren Felder enthalten. Insofern haut das irgendwie
nicht hin.

dann zeig uns doch mal deine SQL-Abfrage, vielleicht ist es nur eine Kleinigkeit, die zu ändern ist!

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Ergänzung - Geänderte Datensätze abfragen
Ergänzend das SQL-Statement:

SELECT [Tab1].PNR, [Tab1].ANREDE, [Tab2].ANREDE
FROM [Tab2] INNER JOIN [Tab1] ON [Tab2].PNR = [Tab1].PNR
WHERE [Tab2].ANREDE[Tab1].ANREDE;

Zwei Tabellen werden über PNR (in beiden Tabellen identisch) verknüpft. Ausgabeergebnis soll PNR, Anrede Tabelle 1 und Anrede Tabelle 2 enthalten; falls sich der Anrede-Wert verändert hat.

Ach ja, genutzt wird Access 2003.

Moin, Marcus,

Die Datensätze 2345 und 4567 werden nicht angezeigt, da in
Tab1 und Tab2 die Datensätze identisch sind.

das entspricht genau der Vorgabe:

Als Abfrageergebnis hätte ich gerne die
Datensätze, bei denen sich in Spalte B eine Änderung von
Tabelle 1 zu Tabelle 2 ergeben hat.

Wo ist das Problem? Aufgabenstellung etwa nicht verstanden?

Gruß Ralf

Folgendes funktioniert: Die Datensätze, bei denen sich nichts geändert hat, werden nicht angezeigt. Die Datensätze bei denen sich ein Wert geändert hat, werden angezeigt. Soweit alles ok.

Was nicht funktioniert: Wenn in einer der Tabellen ein leeres Feld ist und in der zweiten Tabelle plötzlich ein Wert erscheint, dann wird dieser Datensatz nicht ausgegeben.

Beispiel - Datensatz 3456:

In Tabelle 1 ist das Wert-Feld leer.
In Tabelle 2 ist das Wert-Feld mit „Birne“ gefüllt.

Oder

In Tabelle 1 ist das Wert-Feld mit „Birne“ gefüllt.
In Tabelle 2 ist das Wert-Feld leer.

Der Datensatz erscheint nicht im Abfrageergebnis.

Wird das vielleicht nicht von Wert 1 Wert 2 erfasst? Muss ich hier angeben, wenn Wert 1 Wert oder (Wert 1 = leer und Wert 2 gefüllt) oder (Wert 1 = gefüllt und Wert 2 = leer)?

Grüße

Marcus

Ergänzend das SQL-Statement:

SELECT [Tab1].PNR, [Tab1].ANREDE, [Tab2].ANREDE
FROM [Tab2] INNER JOIN [Tab1] ON [Tab2].PNR = [Tab1].PNR
WHERE [Tab2].ANREDE[Tab1].ANREDE;

Nichts (keine Information) in Access ist NULL und nicht wie häufig vermutet " ".
Null ist kein Wert der so mit einer Zeichenkette verglichen werden kann.

Null „Herr“ funktioniert nicht

Du könntest jetzt umständlich auf NULL prüfen, oder einfach eine Hilfszeichenkettte anfügen:

WHERE [Tab2].ANREDE & „X“ [Tab1].ANREDE & „X“;

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Hi Marcus,

ich hab’s nicht so mit den Joins, deshalb eine Variante:

 SELECT Anrede1.Pnr, Anrede1.Anrede AS Anrede1, Anrede2.Anrede AS Anrede2
 FROM Anrede1, anrede2
 WHERE anrede1.pnr = anrede2.pnr /\* Join-Bedingung
 and (anrede1.Anrede anrede2.Anrede
 or anrede1.anrede is null and anrede2.anrede is not null
 or anrede2.anrede is null and anrede1.anrede is not null);

Gruß Ralf

1 Like

Yep! Das war´s! Vielen Dank!!!
Fiese Geschichte, dass ein leeres Feld separat abgefragt werden muss. :wink:

Danke nochmals!

Grüße

Marcus

Danke für den Tipp - Problem gelöst
Ich dachte mir schon, dass „leer“ separat abgefragt werden muss, aber „ich dachte mir“ und „ich mach mal eben“ sind zwei unterschiedliche Dinge.

Danke für die Hinweise!

Grüße

Marcus