Wenn Sie mehrere Datenquellen in eine Access-Abfrage einschließen, verwenden Sie Joins, um die datensätze einzuschränken, die Sie anzeigen möchten, je nachdem, wie die Datenquellen miteinander verknüpft sind. Außerdem verwenden Sie Joins, um Datensätze aus beiden Datenquellen zu kombinieren, sodass jedes Datensatzpaar aus den Quellen zu einem Datensatz in den Abfrageergebnissen wird.
In diesem Artikel werden die verschiedenen Arten von Joins erläutert und gezeigt, wie Sie sie in einer Abfrage verwenden. Standardmäßig wird automatisch eine Verknüpfung erstellt, wenn bereits eine Beziehung zwischen zwei Datenquellen besteht, die Sie in einer Abfrage verwenden. Eine Verknüpfung wird auch erstellt, wenn Felder vorhanden sind, die eindeutig einander entsprechen. Sie können einen automatisch erstellten Join löschen. Dieser Artikel enthält grundlegende Informationen zu Tabellenbeziehungen, einschließlich der Erstellung einer Tabelle.
Hinweis: Sie können Abfragen auf die gleiche Weise verknüpfen, wie Sie Tabellen verknüpfen, und sie können auch beide verknüpfen.
Inhalt dieses Artikels
Übersicht
Eine Datenbank ist eine Sammlung von Datentabellen, die logische Beziehungen zueinander aufweisen. Sie verwenden Beziehungen, um Tabellen anhand von Feldern zu verbinden, die sie gemeinsam haben. Eine Tabelle kann Teil einer beliebigen Anzahl von Beziehungen sein, aber jede Beziehung hat immer genau zwei Tabellen. In einer Abfrage wird eine Beziehung durch einen Join dargestellt.
Wenn Sie einer Abfrage Tabellen hinzufügen, erstellt Access Verknüpfungen, die auf Beziehungen basieren, die zwischen den Tabellen definiert wurden. Sie können Verknüpfungen in Abfragen manuell erstellen, auch wenn sie keine bereits definierten Beziehungen darstellen. Wenn Sie andere Abfragen (anstelle von oder zusätzlich zu Tabellen) als Datenquellen für eine Abfrage verwenden, können Sie Verknüpfungen zwischen den Quellabfragen und auch zwischen diesen Abfragen und allen Tabellen erstellen, die Sie als Datenquellen verwenden.
Joins verhalten sich ähnlich wie Abfragekriterien, da sie Regeln festlegen, mit denen die Daten übereinstimmen müssen, um in die Abfragevorgänge einbezogen zu werden. Im Gegensatz zu Kriterien geben Joins auch an, dass jedes Zeilenpaar, das die Joinbedingungen erfüllt, im Recordset zu einer einzelnen Zeile kombiniert wird.
Es gibt vier grundlegende Arten von Verknüpfungen: innere Joins, äußere Joins, Kreuzjoins und ungleiche Joins. In diesem Artikel werden die einzelnen Jointypen, die Sie verwenden können, die Gründe für die Verwendung der einzelnen Typen und das Erstellen der Joins erläutert.
Joins beziehen sich auf Abfragen, was Beziehungen zu Tabellen sind: ein Hinweis darauf, wie Daten in zwei Quellen basierend auf gemeinsamen Datenwerten kombiniert werden können. Hier sehen Sie eine Abbildung einer Verknüpfung in der Abfrageentwurfsansicht, in der die Eigenschaften des Joins in einem Dialogfeld geöffnet sind:
Diese Zeile zwischen den Tabellen stellt den Join dar. Doppelklicken Sie auf einen Join, um das Dialogfeld Verknüpfungseigenschaften (dargestellt) zu öffnen und den Join zu überprüfen oder zu ändern.
Joins sind manchmal direktional. In diesem Bereich des Dialogfelds wird angezeigt, welche Tabelle in der Verknüpfung enthalten ist und welche Felder zum Verknüpfen der Tabellen verwendet werden.
Dieser Bereich bestimmt den Typ der Verknüpfung: Option 1 ist ein innerer Join, 2 ist ein linker äußerer Join und 3 ist ein rechter äußerer Join.
Felder aus beiden Tabellen können verwendet werden, und daten, die sich auf eine bestimmte Aufgabe beziehen, werden jeweils angezeigt. In einer inneren Verknüpfung sind keine anderen Daten enthalten. In einem äußeren Join sind auch nicht verknüpfte Datensätze aus einer Tabelle in den Abfrageergebnissen enthalten.
Jointypen
Es gibt vier grundlegende Arten von Verknüpfungen: innere Joins, äußere Joins, Kreuzjoins und ungleiche Joins. Kreuzjoins und ungleiche Joins sind erweiterte Jointypen und werden selten verwendet. Sie sollten jedoch wissen, wie Verknüpfungen funktionieren.
Innere Joins: nur verknüpfte Daten aus beiden Tabellen kombiniert
Ein innerer Join ist eine Verknüpfung, bei der Access nur Daten aus einer Tabelle einschließt, wenn in der verknüpften Tabelle entsprechende Daten vorhanden sind und umgekehrt. In den meisten Fällen verwenden Sie innere Verknüpfungen. Wenn Sie eine Verknüpfung erstellen und nicht angeben, um welche Art von Join es sich handelt, geht Access davon aus, dass Sie eine innere Verknüpfung wünschen. Innere Verknüpfungen sind nützlich, da Sie Daten aus zwei Quellen basierend auf gemeinsam genutzten Werten kombinieren können, sodass Daten nur angezeigt werden, wenn ein vollständiges Bild vorliegt.
Äußere Joins: Alle verknüpften Daten werden ordnungsgemäß kombiniert, plus alle verbleibenden Datensätze aus einer Tabelle.
Eine äußere Verknüpfung ähnelt einem inneren Join, fügt jedoch die verbleibenden Zeilen aus einer der Tabellen hinzu. Äußere Joins sind direktional: Ein linker äußerer Join enthält alle Datensätze aus der linken Tabelle – die erste Tabelle im Join – und ein rechter äußerer Join enthält alle Datensätze aus der rechten Tabelle – die zweite Tabelle im Join.
Vollständige äußere Verknüpfungen: alle Daten, sofern möglich kombiniert
In einigen Systemen kann ein äußerer Join alle Zeilen aus beiden Tabellen enthalten, wobei Zeilen kombiniert werden, wenn sie übereinstimmen. Dies wird als vollständiger äußerer Join bezeichnet, und Access unterstützt sie nicht explizit. Sie können jedoch eine Kreuzverknipung und Kriterien verwenden, um denselben Effekt zu erzielen.
Kreuzjoins: Alle Daten, auf jede mögliche Weise kombiniert
In den meisten Fällen ist ein Kreuzjoin ein Nebeneffekt, wenn einer Abfrage zwei Tabellen hinzugefügt und dann vergessen werden, sie zu verknüpfen. Access interpretiert dies so, dass Sie jeden Datensatz aus einer Tabelle in Kombination mit jedem Datensatz aus der anderen Tabelle – jeder möglichen Kombination von Datensätzen – anzeigen möchten. Da keine Daten kombiniert werden können, führt diese Art von Join selten zu nützlichen Ergebnissen. Es gibt jedoch einige Fälle, in denen ein Kreuzjoin genau das ist, was Sie benötigen.
Ungleiche Joins: wie ein regulärer Join, aber verwenden einen anderen Vergleich zum Kombinieren von Zeilen
Ungleiche Joins verwenden einen anderen Operator als das Gleichheitszeichen (=), um Werte zu vergleichen und zu bestimmen, ob und wie die Daten kombiniert werden. Ungleiche Joins werden nicht explizit unterstützt, aber Sie können einen Kreuzjoin und Kriterien verwenden, um denselben Effekt zu erzielen.
Zeilen anzeigen, in denen in beiden verknüpften Tabellen ein gemeinsamer Wert vorhanden ist
Wenn Sie nur die Zeilen anzeigen möchten, die übereinstimmende Werte im verknüpften Feld enthalten, verwenden Sie eine innere Verknüpfung. Access erstellt inneren Joins automatisch.
Innere Verknüpfungen sind die am häufigsten verwendete Verknüpfungsart. Sie teilen einer Abfrage anhand der Daten in den verknüpften Feldern mit, dass Zeilen aus einer der verknüpften Tabellen Zeilen in der anderen Tabelle entsprechen. Wenn eine Abfrage mit einem inneren Join ausgeführt wird, werden nur die Zeilen, in denen ein gemeinsamer Wert in beiden verknüpften Tabellen vorhanden ist, in die Abfragevorgänge einbezogen.
Gewusst wie einen inneren Join verwenden?
In den meisten Fällen müssen Sie nichts tun, um eine innere Verknüpfung zu verwenden. Wenn die Tabellen, die Sie einer Abfrage hinzufügen, bereits Beziehungen aufweisen, erstellt Access automatisch einen inneren Join zwischen jedem Tabellenpaar, wenn Sie die Tabellen hinzufügen. Wenn die Referenzielle Integrität aktiviert ist, wird in Access oberhalb der Verknüpfungslinie eine "1" zur Kennzeichnung der Tabelle auf der 1-Seite einer 1:n-Beziehung und das Symbol für Unendlichkeit (∞) zur Kennzeichnung der Tabelle auf der n-Seite angezeigt.
Auch wenn Sie keine Beziehungen erstellt haben, erstellt Access automatisch innere Verknüpfungen, wenn Sie einer Abfrage zwei Tabellen hinzufügen und diese Tabellen jeweils über ein Feld mit demselben oder kompatiblen Datentyp verfügen und eines der Joinfelder ein Primärschlüssel ist. Die Symbole "eins" und "viele" werden in diesem Fall nicht angezeigt, da die referenzielle Integrität nicht erzwungen wird.
Wenn Sie Ihrer Abfrage Abfragen hinzufügen und keine Beziehungen zwischen diesen Abfragen erstellt haben, erstellt Access nicht automatisch innere Verknüpfungen zwischen diesen Abfragen oder zwischen Abfragen und Tabellen. Im Allgemeinen sollten Sie sie selbst erstellen. Sie erstellen einen inneren Join, indem Sie ein Feld aus einer Datenquelle in ein Feld in einer anderen Datenquelle ziehen. Access zeigt mit einer Linie zwischen den beiden Feldern an, dass eine Verknüpfung erstellt wurde.
SQL-Syntax für einen inneren Join
Innere Joins werden in SQL in der FROM-Klausel angegeben, wie unten gezeigt:
FROM Tabelle1 INNER JOIN Tabelle2 ON Tabelle1.field1 vergleicht Tabelle 2.Feld2
Der INNER JOIN-Vorgang setzt sich wie folgt zusammen:
Teil |
Beschreibung |
Tabelle1, Tabelle2 |
Die Namen der Tabellen, aus denen Datensätze zusammengefasst werden. |
Feld1, Feld2 |
Die Namen der verknüpften Felder. Wenn sie nicht numerisch sind, müssen die Felder dieselbe Datentyp und dieselbe Art von Daten enthalten, aber sie müssen nicht denselben Namen haben. |
Vergleich |
Ein beliebiger relationaler Vergleichsoperator: "=", "<", ">", "<=", ">=" oder "<>". |
Weitere Informationen zur Syntax des inneren Joins finden Sie im Thema INNER JOIN-Vorgang.
Anzeigen aller Zeilen aus einer Tabelle und der entsprechenden Zeilen aus der anderen Tabelle
Äußere Joins weisen eine Abfrage darauf hin, dass einige zeilen auf beiden Seiten des Joins zwar genau übereinstimmen, die Abfrage jedoch alle Zeilen aus einer Tabelle und auch die Zeilen aus der anderen Tabelle enthalten sollte, die einen gemeinsamen Wert auf beiden Seiten der Verknüpfung aufweisen.
Äußere Verknüpfungen können linke äußere Verknüpfungen oder rechte äußere Verknüpfungen sein. In einem linken äußeren Join enthält die Abfrage alle Zeilen aus der ersten Tabelle in der FROM-Klausel der SQL-Anweisung und nur die Zeilen aus der anderen Tabelle, in der das Verknüpfungsfeld Werte enthält, die für beide Tabellen gemeinsam sind. In einem rechten äußeren Join enthält die Abfrage alle Zeilen aus der zweiten Tabelle in der FROM-Klausel der SQL-Anweisung und nur die Zeilen aus der anderen Tabelle, in der das Verknüpfungsfeld Werte enthält, die für beide Tabellen gemeinsam sind.
Hinweis: Sie können leicht erkennen, welche Tabelle die linke Tabelle oder die rechte Tabelle in einem bestimmten Join ist, indem Sie auf den Join doppelklicken und dann im Dialogfeld Verknüpfungseigenschaften suchen. Sie können auch zur SQL-Ansicht wechseln und dann die FROM-Klausel untersuchen.
Da einige der Zeilen auf einer Seite eines äußeren Joins keine entsprechenden Zeilen aus der anderen Tabelle enthalten, sind einige der Felder, die in den Abfrageergebnissen aus dieser anderen Tabelle zurückgegeben werden, leer, wenn die Zeilen nicht übereinstimmen.
Gewusst wie eine äußere Verknüpfung verwenden?
Sie erstellen einen äußeren Join, indem Sie einen vorhandenen inneren Join ändern. Wenn kein innerer Join vorhanden ist, erstellen Sie eine, und ändern Sie sie dann in eine äußere Verknüpfung.
Ändern eines inneren Joins in einen äußeren Join
-
Doppelklicken Sie in der Abfrageentwurfsansicht auf den Join, den Sie ändern möchten.
Das Dialogfeld Verknüpfungseigenschaften wird angezeigt.
-
Beachten Sie im Dialogfeld Verknüpfungseigenschaften die Optionen, die neben Option 2 und Option 3 aufgeführt sind.
-
Klicken Sie auf die gewünschte Option, und klicken Sie dann auf OK.
-
Access zeigt den Join und einen Pfeil an, der von der Datenquelle, in der alle Zeilen eingeschlossen werden, auf die Datenquelle zeigt, in der nur die Zeilen eingeschlossen werden, die die Joinbedingung erfüllen.
Mehrdeutige äußere Verknüpfungen
Wenn Sie eine Abfrage erstellen, die einen LEFT JOIN und einen INNER JOIN enthält, kann Access möglicherweise nicht ermitteln, welcher Joinvorgang zuerst ausgeführt werden soll. Da die Ergebnisse unterschiedlich sind, je nachdem, ob der linke Join oder der innere Join zuerst ausgeführt wird, zeigt Access eine Fehlermeldung an:
Um diesen Fehler zu beheben, müssen Sie die Abfrage so ändern, dass klar ist, welche Verknüpfung zuerst ausgeführt werden soll.
SQL-Syntax für einen äußeren Join
Äußere Joins werden in SQL in der FROM-Klausel angegeben, wie unten gezeigt:
FROM Tabelle1 [ LEFT | RIGHT ] JOIN Table2
ON Table1.field1 compare table2.field2Die LEFT JOIN- und RIGHT JOIN-Operationen bestehen aus den folgenden Teilen:
Teil |
Beschreibung |
Tabelle1, Tabelle2 |
Die Namen der Tabellen, aus denen Datensätze zusammengefasst werden. |
Feld1, Feld2 |
Die Namen der verknüpften Felder. Die Felder müssen vom gleichen Datentyp sein und die gleiche Art von Daten enthalten, aber sie müssen nicht denselben Namen haben. |
Vergleich |
Ein beliebiger relationaler Vergleichsoperator: "=", "<", ">", "<=", ">=" oder "<>". |
Weitere Informationen zur Äußeren Joinsyntax finden Sie im Thema LEFT JOIN, RIGHT JOIN-Vorgänge.
Alle Zeilen aus beiden Tabellen anzeigen und an den Stellen verknüpfen, an denen ein gemeinsamer Wert vorhanden ist
Wenn Sie alle Zeilen aus zwei Tabellen anzeigen und diese anhand allgemeiner Werte verknüpfen möchten, verwenden Sie einen vollständigen äußeren Join. Access unterstützt nicht explizit vollständige äußere Joins, aber Sie können den gleichen Effekt erzielen, indem Sie eine Union-Abfrage verwenden. Im folgenden Verfahren wird erläutert, wie Dies funktioniert. Wenn Sie jedoch weitere Informationen zu Union-Abfragen benötigen, lesen Sie den Abschnitt Siehe auch .
So verwenden Sie eine Union-Abfrage, um einen vollständigen äußeren Join auszuführen:
-
Erstellen Sie eine Abfrage mit einem linken äußeren Join für das Feld, das Sie für einen vollständigen äußeren Join verwenden möchten.
-
Klicken Sie auf der Registerkarte Start in der Gruppe Sichten auf Ansicht und dann auf SQL-Ansicht.
-
Drücken Sie STRG+C, um den SQL-Code zu kopieren.
-
Löschen Sie das Semikolon am Ende der FROM-Klausel, und drücken Sie dann die EINGABETASTE.
-
Geben Sie UNION ein, und drücken Sie dann die EINGABETASTE.
Hinweis: Verwenden Sie nicht die ALL-Schlüsselwort (keyword), wenn Sie eine Union-Abfrage zum Ausführen einer vollständigen äußeren Verknüpfung verwenden.
-
Drücken Sie STRG+V, um den SQL-Code einzufügen, den Sie in Schritt 3 kopiert haben.
-
Ändern Sie im eingefügten Code LEFT JOIN in RIGHT JOIN.
-
Löschen Sie das Semikolon am Ende der zweiten FROM-Klausel, und drücken Sie dann die EINGABETASTE.
-
Fügen Sie eine WHERE-Klausel hinzu, die angibt, dass der Wert des Joinfelds in der ersten Tabelle, die in der FROM-Klausel (der linken Tabelle) aufgeführt ist, NULL ist.
Beispiel: Die FROM-Klausel lautet:
FROM Products RIGHT JOIN [Order Details]
ON Products.ID = [Order Details].[Product ID]Fügen Sie die folgende WHERE-Klausel hinzu:
WHERE Products.ID IS NULL
-
Geben Sie ein Semikolon (;) am Ende der WHERE-Klausel ein, um das Ende der Union-Abfrage anzugeben.
-
Klicken Sie auf der Registerkarte Entwurf in der Gruppe Ergebnisse auf Ausführen.
Kreuzverknipungen
Kreuzjoins unterscheiden sich von inneren und äußeren Joins darin, dass sie nicht explizit in Access dargestellt werden. Bei einem Kreuzjoin wird jede Zeile aus einer Tabelle mit jeder Zeile aus einer anderen Tabelle kombiniert, was zu einem sogenannten Kreuzprodukt oder einem kartesischen Produkt führt. Jedes Mal, wenn Sie eine Abfrage mit Tabellen ausführen, die nicht explizit verknüpft sind, ist ein Kreuzprodukt das Ergebnis. Kreuzjoins sind in der Regel unbeabsichtigt, aber es gibt Fälle, in denen sie nützlich sein können.
Warum sollte ich eine Kreuzverknipung verwenden?
Wenn Sie jede mögliche Kombination von Zeilen zwischen zwei Tabellen oder Abfragen untersuchen möchten, verwenden Sie einen Kreuzjoin. Angenommen, Ihr Unternehmen hatte ein spektakuläres Jahr, und Sie erwägen, Ihren Kunden Rabatte zu erteilen. Sie können eine Abfrage erstellen, die die Einkäufe der einzelnen Kunden addiert, eine kleine Tabelle mit mehreren möglichen Rabattprozentsätzen erstellt und die beiden in einer anderen Abfrage kombinieren, die eine Kreuzverknüpfung ausführt. Am Ende erhalten Sie eine Abfrage, die einen Satz hypothetischer Rabatte für jeden Kunden anzeigt.
Gewusst wie eine Kreuzverknipung verwenden?
Ein Kreuzjoin wird jedes Mal erstellt, wenn Sie Tabellen oder Abfragen in Ihre Abfrage einschließen und nicht mindestens einen expliziten Join für jede Tabelle oder Abfrage erstellen. Access kombiniert jede Zeile aus jeder Tabelle oder Abfrage, die nicht explizit mit einer anderen Tabelle oder Abfrage verknüpft ist, mit jeder anderen Zeile in den Ergebnissen. Betrachten Sie das Rabattszenario aus dem vorherigen Absatz. Angenommen, Sie haben 91 Kunden und möchten sich fünf mögliche Rabattprozentsätze ansehen. Ihre Kreuzverknipung erzeugt 455 Zeilen (das Produkt von 91 und 5).
Wie Sie sich vorstellen können, können unbeabsichtigte Kreuzjoins eine große Anzahl von Zeilen in Ihren Abfrageergebnissen erzeugen. Darüber hinaus sind diese Ergebnisse im Allgemeinen bedeutungslos, denn wenn Sie nicht wirklich beabsichtigen, jede Zeile mit jeder anderen Zeile zu kombinieren, sind die meisten kombinierten Zeilen, die in den Ergebnissen angezeigt werden, nicht sinnvoll. Schließlich kann die Ausführung von Abfragen, die unbeabsichtigte Kreuzjoins verwenden, sehr lange dauern.
1. Die eingekreisten Felder sollten miteinander verknüpft werden.
1. Beachten Sie die sehr große Anzahl von Datensätzen.
1. Beachten Sie, dass die Anzahl der Datensätze viel kleiner ist.
Verknüpfen von Tabellen basierend auf einer Ungleichheit von Feldwerten
Joins müssen nicht auf der Äquivalenz der verknüpften Felder basieren. Eine Verknüpfung kann auf einem beliebigen Vergleichsoperator basieren, z. B. größer als (>), kleiner als (<) oder ungleich (<>). Joins, die nicht auf Äquivalenz basieren, werden als ungleiche Joins bezeichnet.
Wenn Sie die Zeilen von zwei Datenquellen basierend auf Feldwerten kombinieren möchten, die ungleich sind, verwenden Sie eine ungleiche Verknüpfung. In der Regel basieren ungleiche Verknüpfungen entweder auf den Vergleichsoperatoren größer als (>), kleiner als (<), größer als oder gleich (>=) oder kleiner als oder gleich (<=). Ungleiche Verknüpfungen, die auf dem Operator ungleich (<>) basieren, können fast so viele Zeilen zurückgeben wie Kreuzjoins, und die Ergebnisse können schwer zu interpretieren sein.
Gewusst wie einen ungleichen Join verwenden?
Ungleiche Joins werden in der Entwurfsansicht nicht unterstützt. Wenn Sie sie verwenden möchten, müssen Sie dazu die SQL-Ansicht verwenden. Sie können jedoch eine Verknüpfung in der Entwurfsansicht erstellen, zur SQL-Ansicht wechseln, den Vergleichsoperator gleich (=) suchen und ihn in den Operator ändern, den Sie verwenden möchten. Anschließend können Sie die Abfrage nur dann in der Entwurfsansicht erneut öffnen, wenn Sie den Vergleichsoperator in der SQL-Ansicht zuerst wieder in equals (=) ändern.
Löschen eines Joins
Wenn Access automatisch einen Join erstellt, den Sie nicht wünschen, oder wenn Sie versehentlich eine Verknüpfung erstellen , z. B. eine Verknüpfung zwischen zwei Feldern mit unterschiedlichen Datentypen, können Sie die Verknüpfung löschen.
-
Klicken Sie im Abfrageentwurfsbereich auf den Join, den Sie entfernen möchten.
-
Drücken Sie ENTF.
– oder –
-
Klicken Sie im Abfrageentwurfsbereich mit der rechten Maustaste auf den Join, den Sie entfernen möchten, und klicken Sie dann auf Löschen.