zunaras
Goto Top

Access Abfrage, Vergleich zwischen 3 Feldern

Hallo!

ich möchte gerne eine Vergleichsabfrage zwischen drei Tabellenfeldern durchführen
Tabelle 1 sind Adressen, Tabelle 2 eine Dokumentenliste mit zwei Feldern für die Adresse pro Datensatz (Rg.- und Bv-Anschrift).

Durch eine eindeutige Nummer in der Adresse sind beide Tabellen verknüpft.
Ich möchte nur diejenigen Adressen gezeigt bekommen, wenn in der Tabelle 2, die eindeutige Nr. in Feld 1 und Feld 2 nicht zu finden ist.

Hier mein Versuch - begonnen mit dem Assistenten...:
SELECT adresse.nr, adresse.name
FROM adresse LEFT JOIN dokument ON (adresse.nr = dokument.nr1) AND (adresse.nr = dokument.nr2)
WHERE (((dokument.nr1) Is Null) AND ((dokument.nr2) Is Null));

Es werden damit mehr Ergebnisse gezeigt, als wenn ich zB nur zwischen adresse.nr und dokument.nr1 vergleiche.

Könnte mir mit der Abfrage jemand weiterhelfen?

Viele Grüße

Content-ID: 458585

Url: https://administrator.de/contentid/458585

Ausgedruckt am: 19.11.2024 um 13:11 Uhr

SlainteMhath
SlainteMhath 04.06.2019 um 16:54:23 Uhr
Goto Top
Moin,

Klammern in der JOIN Klausel richtig setzen, dann sollte das passen face-smile

lg,
Slainte
Zunaras
Zunaras 05.06.2019 um 08:20:05 Uhr
Goto Top
Moin!

und danke für den Tipp. Ich habe jetzt verschiedene Klammersetzungen durchprobiert. Auch noch mal nach Beispielen von Jointechniken gesucht und danach angepasst.
Außer dem selben großen Ergebnis oder Syntaxfehler war nichts zu machen.

VG
ukulele-7
ukulele-7 05.06.2019 um 09:11:57 Uhr
Goto Top
SELECT adresse.nr, adresse.name
FROM adresse LEFT JOIN dokument ON (adresse.nr = dokument.nr1 OR adresse.nr = dokument.nr2)
WHERE dokument.nr1 Is Null AND dokument.nr2 Is Null;
Das sollte es tun, einfacher wäre im WHERE auch nur den pk der Tabelle dokument auf IS NULL zu prüfen.
Zunaras
Zunaras 05.06.2019 um 10:53:33 Uhr
Goto Top
Hi!

Es kommt der Fehler "JOIN-Ausdruck nicht unterstützt" wenn in Zeile 2 "OR" steht.
"AND" funktioniert, bringt aber nur das große Ergebnis.

VG
ukulele-7
Lösung ukulele-7 05.06.2019 aktualisiert um 11:13:40 Uhr
Goto Top
Hm das ist vermutlich Access geschuldet. Dann probier mal:
SELECT * FROM adresse WHERE adresse.nr NOT IN ( SELECT nr1 FROM dokument WHERE nr1 IS NOT NULL UNION SELECT nr2 FROM dokument WHERE nr2 IS NOT NULL )
oder
SELECT * FROM adresse WHERE adresse.nr NOT IN ( SELECT nr1 FROM dokument WHERE nr1 IS NOT NULL ) AND adresse.nr NOT IN ( SELECT nr2 FROM dokument WHERE nr2 IS NOT NULL )
Zunaras
Zunaras 05.06.2019 um 11:32:51 Uhr
Goto Top
Hallo!

Vielen Dank! Der zweite Code funktioniert. Jetzt kommt das korrekte Ergebnis heraus. face-smile

Viele Grüße