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-Key: 458585

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

Printed on: April 24, 2024 at 14:04 o'clock

Member: SlainteMhath
SlainteMhath Jun 04, 2019 at 14:54:23 (UTC)
Goto Top
Moin,

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

lg,
Slainte
Member: Zunaras
Zunaras Jun 05, 2019 at 06:20:05 (UTC)
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
Member: ukulele-7
ukulele-7 Jun 05, 2019 at 07:11:57 (UTC)
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.
Member: Zunaras
Zunaras Jun 05, 2019 at 08:53:33 (UTC)
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
Member: ukulele-7
Solution ukulele-7 Jun 05, 2019 updated at 09:13:40 (UTC)
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 )
Member: Zunaras
Zunaras Jun 05, 2019 at 09:32:51 (UTC)
Goto Top
Hallo!

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

Viele Grüße