[ACCESS] Daten abfragen, die in Tabelle 2 nicht erfasst wurden
-
Moin Moin allerseits!
Ich wollte mit Access eine Abfrage starten, die abfragt welche Personalnummern der Tabelle Person nich in der Tabelle Gespräch auftauchen.
Hierfür hab ich 3 Tabellen:Tabelle Email:
PersNr - Zahl primarykey
Addy- TextTabelle Person:
PersNr - Zahl primarykey
Vorname - Text
Nachname - Text
...Tabelle Gespraech
GespraechID - Zahl primarykey
Datum - Datum/Uhrzeit
PersNr - ZahlIch habe jetzt folgenden SQL Code, um mein Problem zu lösen:
SELECT DISTINCT Person.PersNr, Person.Vorname, Person.Nachname, Email.Addy FROM (Person INNER JOIN Gespraech ON Person.PersNr<>Gespraech.PersNr) INNER JOIN Email ON Person.PersNr=Email.PersNr;
Wenn ich eine Menge von Personen habe, aber nur ein Teil dieser Personen mit der PersNr in der Tabelle Gespraech auftaucht, funktioniert der Code auch einwandfrei. Aber, sollten alle Personen bereits ein Gespräch geführt haben, erhalte ich KEINE leere Tabelle zurück, wie man es eigentlich vermuten sollte, sondern ich erhalte ALLE Personen.
Ist das ein Fehler von Access, oder ist der Code einfach nur totaler Müll?
MfG
Vic
-
INNER JOIN Gespraech ON Person.PersNr<>Gespraech.PersNr)
Hier selektierst Du einen INNER-JOIN über alle ungleichen Personalnummern. Damit ist das Ergebnis sowieso hinfällig. Auch die scheinbar richtigen Resultsets dürften sich, bei näherer Betrachtung, als falsch herausstellen.
Statt dessen einfach eine entsprechende WHERE-Klausel einfügen.
WHERE NOT (Person.PersNr IN (SELECT PersNr FROM Gespraech))
Möglicherweise ist eine EXISTS-Abfrage schneller, einfach mal ausprobieren.
-
Danke
jetzt funktioniert es!Für alle die ein ähnliches Problem haben, das ist der Code
SELECT DISTINCT Person.PersNr, Person.Vorname, Person.Nachname, Email.Addy FROM Person, Gespraech, Email WHERE NOT (Person.PersNr IN (SELECT PersNr FROM Gespraech)) AND Email.PersNr = Person.PersNr;
MfG
Vic