Ich benutze MS Access 2010 und kämpfen mit der folgenden Abfrage. Angenommen, ich habe zwei Tabellen, tblWeeklyData und tblMainData, die beide Informationen über Schüler und ihre Klassen enthalten. Die Datensätze in jeder Tabelle sind mit dem gemeinsamen Schlüssel fldStudentNumber verknüpft. Angenommen, beide Tabellen enthalten auch das Feld fldClass, das den Namen der Klasse enthält, die der Schüler belegt.MS Acces Join Abfrage mit WHERE-Bedingung
tblWeeklyData enthält neue Studenteninformationen und wird mit tblMainData verglichen, um nur vorhandene Studenten zu identifizieren, die neue Klassen studieren.
Ich möchte die zwei Tabellen abfragen, um Schüler in tblWeeklyData zu identifizieren, die bereits in tblMainData existieren (passend zu StudentNumber) und die eine neue Klasse studieren, dh es gibt keine Übereinstimmung zwischen tblWeeklyData.fldClass und tblMainData.fldClass für diesen bestimmten Schüler . .
[Bearbeiten] Neue Studenten innerhalb tblWeeklyData, die nicht von der Abfrage zurückgegeben werden [/ Edit]
Die SQL Ich verwende ist nicht eine passende StudentNumber in tblMainData haben sollte:
SELECT [tblWeeklyData].fldStudentNumber, [tblWeeklyData].fldClass
FROM tblWeeklyData INNER JOIN tblMainData ON
([tblWeeklyData].fldStudentNumber = tblMainData.fldStudentNumber)
WHERE ((([tblWeeklyData].fldClass)<>[tblMainData].[fldClass]));
wenn tblWeeklyData enthält Zeilen
fldStudentNumber fldClass
A0001 Chemistry
und tblMainData enthält
fldStudentNumber fldClass
A0001 Art
A0001 Biology
Die obige Abfrage gibt richtig aus tblWeeklyData bestehenden Student A0001 die neue Klasse Chemie studieren:
fldStudentNumber fldClass
A0001 Chemistry
Allerdings ist diese Abfrage nicht mit den folgenden Daten arbeiten:
tblWeeklyData
-------------
fldStudentNumber fldClass
A0001 Chemistry
A0001 Dentistry
blMainData
----------
fldStudentNumber fldClass
A0001 Art
A0001 Biology
A0001 Chemistry
Ich möchte die Abfrage, nur "A0001 Dentistry" von tblWeeklyData als Zahnmedizin zurückzugeben, ist die einzige * neue "Klasse, die vorhandener Student A0001 studiert. Allerdings gibt die Abfrage:
fldStudentNumber fldClass
A0001 Chemistry
A0001 Dentistry
ich nicht Zeile „A0001 Chemistry“ will zurückgegeben werden als Chemie für Schüler A0001 mit bereits bestehenden in tblMainData keine neue Klasse ist.
[Bearbeiten] Um zu zeigen, dass neue Studenten sollten nicht zurückgeschickt werden, nehme an, es gibt zwei Tabellen
tblWeeklyData
-------------
fldStudentNumber fldClass
A0001 Chemistry
A0001 Dentistry
A0002 Zoology
blMainData
----------
fldStudentNumber fldClass
A0001 Art
A0001 Biology
A0001 Chemistry
Hier A002 Schüler sollte nicht zurückgegeben werden, da es nicht in tblMainData existiert. Ist das möglich?
[/ Edit]
Ich habe viele Variationen der obigen Abfrage ohne Erfolg versucht. Ich kann im letzten Beispiel sehen, dass die WHERE-Klausel mit "Chemistry <> Art" oder "Chemistry <> Biology" "True" ergibt, also brauche ich eine andere WHERE-Bedingung, die * jede "Klasse untersucht, die ein Student studiert Wenn eine Klasse neu ist, habe ich SQL EXISTS IN und Unterabfragen betrachtet, aber ich konnte sie noch nicht lösen.
Jede Hilfe in dieser Angelegenheit wäre dankbar erkennen,
Grüße
Robbie
Danke Alberto - Ihre bereitgestellte Lösung funktioniert perfekt, aber ich sehe, dass mein erster Framing der Frage zu vereinfachten war und nicht angegeben war, dass nur bestehenden Studenten in beiden Tabellen zurückgegeben werden sollen. Wenn beispielsweise in tblWeeklyData ein neuer Student vorhanden ist, der in tblMainData keine übereinstimmende StudentNumber aufweist, sollte er nicht zurückgegeben werden. Ich werde zu meinem ursprünglichen Beitrag gehen und es bearbeiten, um weiter zu erklären, was ich meine, – RobbieThompson73