Einführung in Access SQL

Wichtig :  Dieser Artikel wurde maschinell übersetzt. Bitte beachten Sie den Haftungsausschluss. Die englische Version des Artikels ist als Referenz hier verfügbar: hier.

Wenn Sie Daten aus einer Datenbank abrufen möchten, bitten Sie Sie mithilfe von Structured Query Language oder SQL für die Daten. SQL ist eine Programmiersprache, die Englisch sehr ähnlich, das Datenbankprogrammen erkannt. Zu kennen SQL ist wichtig, da jeder Abfrage in Microsoft Access SQL verwendet. Grundlegendes zur Funktionsweise von SQL helfen bessere Abfragen erstellen, und können, damit es einfacher für Sie zu eine Abfrage zu beheben, wenn keine Ergebnisse zurückgegeben wird, die gewünschte.

Hinweis : SQL kann nicht für eine Webabfrage bearbeitet werden.

Inhalt dieses Artikels

Was ist SQL?

Grundlegende SQL-Klauseln: SELECT, FROM, dabei

Sortieren der Ergebnisse: REIHENFOLGE NACH

Arbeiten mit Zusammenfassungsdaten: GROUP BY und HAVING

Kombinieren von Abfrageergebnissen: UNION

Weitere Informationen zu der SELECT-Klausel

Weitere Informationen zu der FROM-Klausel

Weitere Informationen über die WHERE-Klausel

Was ist SQL?

SQL ist eine Computersprache für die Arbeit mit Gruppen von Fakten und die Beziehungen zwischen ihnen an. Relationalen Datenbank-Programmen, z. B. Access, verwenden SQL arbeiten mit Daten. Wie viele Computersprachen ist SQL einem internationalen Standard, der von Organisationen wie ISO und ANSI erkannt wird.

Sie verwenden SQL, um Gruppen von Daten zu beschreiben, mit denen Sie Fragen beantworten können. Beim Verwenden von SQL müssen Sie die richtige Syntax einhalten. Die Syntax besteht aus einer Reihe von Regeln, durch die die Elemente einer Sprache richtig kombiniert werden. Die SQL-Syntax basiert auf der englischen Syntax und verwendet viele der gleichen Elemente wie die Syntax von Visual Basic for Applications (VBA).

Eine einfache SQL-Anweisung, die eine Liste von Nachnamen für Kontakte abruft, deren Vorname Mary ist, sieht beispielsweise wie folgt aus:

SELECT Last_Name
FROM Contacts
WHERE First_Name = 'Mary';

Hinweis : SQL wird nicht nur zum Bearbeiten von Daten, sondern auch für das Erstellen und ändern den Entwurf von Datenbankobjekten, wie etwa Tabellen verwendet. Der Teil der SQL, der für das Erstellen und Datenbankobjekten verwendet wird, heißt Daten-Definition Language (DDL). Dieses Thema befasst sich nicht auf DDL aus. Weitere Informationen finden Sie im Artikel Erstellen oder Ändern von Tabellen oder Indizes mithilfe einer Datendefinitionsabfrage.

SELECT-Anweisungen

Zum Beschreiben eines Datensatzes mithilfe von SQL schreiben Sie eine SELECT-Anweisung, die eine vollständige Beschreibung des Datensatzes enthält, den Sie aus einer Datenbank abrufen möchten, und die Folgendes umfasst:

  • Die Tabellen, welche die Daten enthalten

  • Die Beziehung zwischen Daten aus verschiedenen Quellen

  • Die Felder oder Berechnungen, welche die Daten generieren

  • Kriterien, die Daten benutzerspezifisch entsprechen muss enthalten.

  • Die Sortierung der Ergebnisse

SQL-Klauseln

Wichtiger Bestandteile von SQL-Anweisungen sind Klauseln, von denen jede eine Aufgabe für die SQL-Anweisung erfüllt. Einige Klauseln sind in einer SQL-Anweisung erforderlich. In der folgenden Tabelle werden die gängigsten SQL-Klauseln vorgestellt.

SQL-Klausel

Zweck

Erforderlich

SELECT

Gibt die Felder mit den gewünschten Daten an

Ja

FROM

Enthält die Tabellen mit den Feldern, die in der SELECT-Klausel angegeben sind

Ja

WHERE

Gibt Feldkriterien an, die jeder Datensatz erfüllen muss, um in die Ergebnisse einbezogen zu werden

Nein

ORDER BY

Gibt die Sortierung der Ergebnisse an

Nein

GROUP BY

Gibt in einer SQL-Anweisung mit Aggregatfunktionen Felder an, die in der SELECT-Klausel nicht zusammengefasst werden

Nur dann, wenn solche Felder vorhanden sind

HAVING

Gibt in einer SQL-Anweisung mit Aggregatfunktionen Felder an, die in der SELECT-Klausel nicht zusammengefasst werden

Nein

SQL-Begriffe

Eine SQL-Klausel besteht aus Begriffen, die mit Wortarten vergleichbar sind. Die folgende Tabelle enthält die SQL-Begriffsarten.

SQL-Begriff

Vergleichbare Wortart

Definition

Beispiel

Bezeichner

Nomen

Ein Name, mit dem Sie ein Datenbankobjekt bezeichnen, z. B. der Name eines Felds

Kunden.[Telefonnummer]

Operator

Verb oder Adverb

Ein Schlüsselwort, das eine Aktion repräsentiert oder ändert.

AS

Konstante

Nomen

Ein sich nicht ändernder Wert, z. B. eine Zahl oder NULL.

42

Ausdruck

Adjektiv

Eine Kombination aus Bezeichnern, Operatoren, Konstanten und Funktionen, die als Ergebnis einen einzelnen Wert liefert

>= Produkte.[Einzelpreis]

Seitenanfang

Grundlegende SQL-Klauseln: SELECT, FROM und WHERE

Eine SQL-Anweisung hat das folgende allgemeine Format:

SELECT field_1
FROM table_1
WHERE criterion_1
;

Hinweise : 

  • Access ignoriert Zeilenumbrüche in SQL-Anweisungen. Erwägen Sie jedoch das Eingeben jeder Klausel in eine eigene Zeile, damit Ihre SQL-Anweisungen besser lesbar werden.

  • Jede SELECT-Anweisung endet mit einem Semikolon (;). Das Semikolon kann am Ende der letzten Klausel oder in einer eigenen Zeile am Ende der SQL-Anweisung stehen.

Beispiel in Access

Das folgende Beispiel veranschaulicht, wie eine SQL-Anweisung für eine einfache SELECT-Abfrage in Access aussehen kann:

Registerkarte eines SQL-Objekts mit einer SELECT-Anweisung

1. SELECT-Klausel

2. FROM-Klausel

3. WHERE-Klausel

Diese SQL-Beispielabfrage kann so interpretiert werden: Daten auswählen, die in den Felder "E-Mail-Adresse" und "Firma" der Tabelle "Kontakte" gespeichert sind, insbesondere Datensätze, bei den "Stuttgart" der Wert im Feld "Ort" ist.

Nun wollen wir das Beispiel Klausel für Klausel untersuchen, um herauszufinden, wie die SQL-Syntax funktioniert.

Die SELECT-Klausel

SELECT [E-mail Address], Company

Dies ist die SELECT-Klausel, die aus einem Operator (SELECT) gefolgt von zwei Bezeichnern ([E-Mail-Adresse] und Firma) besteht.

Wenn ein Bezeichner Leer- oder Sonderzeichen enthält, (z. B. "E-Mail-Adresse"), muss er in eckige Klammer gesetzt werden.

Eine SELECT-Klausel muss nicht angeben, welche Tabellen die Felder enthalten, und kann keine Bedingungen angeben, die erfüllt werden müssen, damit die Daten in die Ergebnisse einbezogen werden.

In einer SQL-Anweisung steht die SELECT-Klausel stets vor der FROM-Klausel.

Die FROM-Klausel

FROM Contacts

Dies ist die FROM-Klausel, die aus einem Operator (FROM) und einem Bezeichner (Kontakte) besteht.

Eine FROM-Klausel gibt nicht die auszuwählenden Felder an.

Die WHERE-Klausel

WHERE City="Seattle"

Dies ist die WHERE-Klausel, die aus einem Operator (WHERE) und einem Ausdruck (Ort="Stuttgart") besteht.

Hinweis : Im Gegensatz zur SELECT- und zur FROM-Klausel ist die WHERE-Klausel kein erforderliches Element einer SQL-Anweisung.

Sie erreichen viele der Aktionen, die SQL Ihnen ermöglicht mithilfe von SELECT, FROM, und WHERE-Klausel. Weitere Informationen Sie verwenden diese Klauseln wird in den folgenden Abschnitten am Ende dieses Artikels dargestellt:

Weitere Informationen zu der SELECT-Klausel

Weitere Informationen zu der FROM-Klausel

Weitere Informationen über die WHERE-Klausel

Sortieren der Ergebnisse: ORDER BY

Wie in Microsoft Office Excel können Sie in Access Abfrageergebnisse in einem Datenblatt sortieren. Sie können außerdem über eine ORDER BY-Klausel in der Abfrage angeben, wie die Ergebnisse nach Ausführung der Abfrage sortiert werden sollen. Die ORDER BY-Klausel ist stets die letzte Klausel in der SQL-Anweisung.

Eine ORDER BY-Klausel enthält eine Liste der für die Sortierung zu verwendenden Felder in der Reihenfolge, in der Sie die Sortiervorgänge anwenden möchten.

Angenommen, Sie möchten Ihre Ergebnisse zuerst nach dem Wert des Felds "Firma" in absteigender Reihenfolge (falls es Felder mit demselben Wert für "Firma" gibt) und anschließend nach den Werten im Feld "E-Mail-Adresse" in aufsteigender Reihenfolge sortieren. Die ORDER BY-Klausel muss dann so aussehen: 

ORDER BY Company DESC, [E-mail Address]

Hinweis : In Access werden Werte standardmäßig in aufsteigender Reihenfolge (von A-Z, vom kleinsten zum größten Wert) sortiert. Verwenden Sie das Schlüsselwort DESC, wenn Werte stattdessen in absteigender Reihenfolge sortiert werden sollen.

Weitere Informationen zur ORDER BY-Klausel finden Sie unter ORDER BY-Klausel.

Seitenanfang

Arbeiten mit zusammengefassten Daten: GROUP BY und HAVING

Mitunter ist es erforderlich, mit zusammengefassten Daten, z. B. dem Gesamtumsatz eines Monats oder den teuersten Artikeln in einem Bestand, zu arbeiten. Zu diesem Zweck wenden Sie eine Aggregatfunktion auf ein Feld in Ihrer SELECT-Klausel an. Wenn die Abfrage beispielsweise die Anzahl der E-Mail-Adressen für jedes Unternehmen liefern soll, sieht Ihre SELECT-Klausel etwa so aus:

SELECT COUNT([E-mail Address]), Company

Die Aggregatfunktionen, die Sie verwenden können, hängen vom Datentyp des gewünschten Felds oder Ausdrucks ab. Weitere Informationen zu den verfügbaren Aggregatfunktionen finden Sie im Artikel SQL-Aggregatfunktionen.

Angeben von Feldern, die nicht in einer Aggregatfunktion verwendet werden: Die GROUP BY-Klausel

Bei Verwenden von Aggregatfunktionen müssen Sie in der Regel auch eine GROUP BY-Klausel erstellen, die alle Felder enthält, auf die Sie keine Aggregatfunktion anwenden möchten. Wenn Sie Aggregatfunktionen auf alle Felder in einer Abfrage anwenden, müssen Sie keine GROUP BY-Klausel erstellen.

Eine GROUP BY-Klausel folgt unmittelbar auf die WHERE-Klausel bzw. die FROM-Klausel, wenn es keine WHERE-Klausel gibt. Eine GROUP BY-Klausel listet die Felder entsprechend der Angabe in der SELECT-Klausel auf.

Wenn das vorherige Beispiel fortsetzend die SELECT-Klausel eine Aggregatfunktion auf "[E-Mail-Adresse]", aber nicht auf "Firma" anwenden, sieht Ihre GROUP-Klausel so aus:

GROUP BY Company

Weitere Informationen zur GROUP BY-Klausel finden Sie unter GROUP BY-Klausel.

Einschränken der zusammengefasste Werte durch Verwenden von Kriterien Gruppe: die HAVING-Klausel

Wenn Sie Ihre Ergebnisse mithilfe von Kriterien einschränken möchten, doch das Feld, für das Kriterien gelten sollen, in einer Aggregatfunktion verwendet wird, können Sie keine WHERE-Klausel verwenden, sondern müssen eine HAVING-Klausel angeben. Eine HAVING-Klausel funktioniert wie eine WHERE-Klausel, wird jedoch für aggregrierte Daten verwendet.

Angenommen, Sie wenden die AVG-Funktion (die einen Durchschnittswert berechnet) auf das erste Feld in Ihrer SELECT-Klausel an:

SELECT COUNT([E-mail Address]), Company

Wenn die Abfrage die Ergebnisse auf Basis des Werts dieser COUNT-Funktion einschränken soll, können Sie für dieses Feld in der WHERE-Klausel kein Kriterium wählen. Statt dessen geben Sie das Kriterium in einer HAVING-Klausel an. Wenn die Abfrage beispielsweise nur Zeilen zurückgeben soll, wenn mehrere E-Mail-Adressen mit einer Firma verknüpft sind, sieht die HAVING-Klausel so aus:

HAVING COUNT([E-mail Address])>1

Hinweis : Eine Abfrage kann eine WHERE- und eine HAVING-Klausel aufweisen. Kriterien für Felder, die nicht in einer Aggregatfunktion verwendet werden, gehören in die WHERE-Klausel. Kriterien für Felder, die in Aggregatfunktionen verwendet werden, gehören in die HAVING-Klausel. 

Weitere Informationen zur HAVING-Klausel finden Sie unter HAVING-Klausel.

Seitenanfang

Kombinieren von Abfrageergebnissen: UNION

Sie verwenden den Operator UNION, wenn Sie alle Daten prüfen möchten, die von mehreren ähnlichen SELECT-Abfragen gemeinsam als kombinierter Satz zurückgegeben werden.

Mit dem Operator UNION können Sie zwei SELECT-Anweisungen zu einer kombinieren. Die SELECT-Anweisungen, die Sie kombinieren, müssen über die gleiche Anzahl von Ausgabefeldern verfügen, die die gleiche Reihenfolge sowie die gleichen oder kompatible Datentypen aufweisen. Beim Ausführen der Abfrage werden die Daten aus jedem Satz einander entsprechender Felder zu einem Ausgabefeld kombiniert, sodass die Ausgabe der Abfrage über die gleiche Anzahl von Feldern wie jede der SELECT-Anweisungen verfügt.

Hinweis : Im Rahmen einer UNION-Abfrage sind die Datentypen "Zahl" und "Text" kompatibel.

Bei Verwenden des UNION-Operators können Sie auch mithilfe des Schlüsselworts ALL angeben, ob die Abfrageergebnisse duplizierte Zeilen, falls vorhanden, enthalten sollen.

Die grundlegende SQL-Syntax für eine UNION-Abfrage, mit der zwei SELECT-Abfragen kombiniert werden, sieht wie folgt aus:

SELECT field_1
FROM table_1
UNION [ALL]
SELECT field_a
FROM table_a
;

Nehmen wir beispielsweise einmal an, Sie verfügen über eine Tabelle mit Namen "Produkte" und eine weitere Tabelle mit Namen "Dienstleistungen". In beiden Tabellen gibt es Felder, die den Namen des Produkts oder des Diensts ("Name"), den Preis ("Preis") sowie die Verfügbarkeit von Gewährleistung oder Garantie ("Gewährleistung_verfügbar") umfassen. Darüber hinaus gibt es ein Feld, das angibt, ob Sie das Produkt oder den Dienst exklusiv anbieten ("exklusives_Angebot"). Obwohl in der Tabelle "Produkte" Informationen zur Gewährleistung und in der Tabelle "Dienstleistungen" Informationen zur Garantie gespeichert sind, sind die Daten im Grunde genommen die gleichen (ob für ein bestimmtes Produkt oder für einen Dienst eine Qualitätszusage gegeben wird). Sie können nun eine UNION-Abfrage wie die folgende verwenden, um diese vier Felder aus den beiden Tabellen zu kombinieren:

SELECT name, price, warranty_available, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services
;

Weitere Informationen dazu, wie Sie mithilfe des UNION-Operators Kombinieren von SELECT-Anweisungen finden Sie im Artikel, die die Ergebnisse mehrerer Auswahlabfragen mithilfe einer Union-Abfrage kombinieren.

Seitenanfang

Weitere Informationen zur SELECT-Klausel

In einer SELECT-Anweisung listet die SELECT-Klausel die Felder, die Daten enthalten die Sie verwenden möchten.

Setzen von Bezeichnern in eckige Klammern

Sie können den Namen eines Felds in einer SELECT-Klausel in eckige Klammern setzen. Wenn der Name keine Leer- oder Sonderzeichen enthält (z. B. Satzzeichen), sind die eckigen Klammern optional. Enthält der Name Leer- oder Sonderzeichen, sind die eckigen Klammern verbindlich.

Tipp : Ein Name, der Leerzeichen enthält einfacher zu lesen ist und können Sie Zeit sparen, wenn Sie Entwerfen von Formularen und Berichten, aber möglicherweise sorgen, dass Sie weitere Geben Sie beim Schreiben von SQL-Anweisungen einhandeln. Wenn Sie Objekte in Ihrer Datenbank benennen, müssen Sie dies berücksichtigen.

Falls Ihre SQL-Anweisung zwei oder mehrere Felder mit demselben Namen enthält, müssen Sie in der SELECT-Klausel dem Feldnamen den Namen der Datenquelle der einzelnen Felder hinzufügen. Als Datenquellenname verwenden Sie den Namen, den Sie in der FROM-Klausel angeben.

Auswählen aller Felder

Wenn Sie alle Felder einer Datenquelle einschließen möchten, können Sie entweder alle Felder in der SELECT-Klausel einzeln angeben oder mit dem Platzhalter (*) arbeiten. Bei Verwenden des Sternchens bestimmt Access bei Ausführung der Abfrage, welche Felder die Datenquelle enthält, und schließt alle diese Felder in die Abfrage ein. Dies stellt sicher, dass die Abfrage aktuell bleibt, wenn der Datenquelle neue Felder hinzugefügt werden.

Sie können das Sternchen für eine oder mehrere Datenquellen in einer SQL-Anweisung angeben. Wenn Sie das Sternchen angeben und mehrere Datenquellen vorhanden sind, müssen Sie neben dem Sternchen den Datenquellennamen hinzufügen, damit Access bestimmen kann, aus welcher Datenquelle alle Felder einbezogen werden sollen.

Angenommen, Sie möchten alle Felder aus der Tabelle "Aufträge", aber nur die E-Mail-Adresse aus der Tabelle "Kontakte" auswählen. Ihre SELECT-Anweisung sieht dann so aus:

SELECT Orders.*, Contacts.[E-mail Address]

Hinweis : Verfolgen Sie nach, wann Sie das Sternchen verwenden. Wenn der Datenquelle später neue Felder hinzugefügt werden und Sie diese nicht berücksichtigt haben, erhalten Sie ggf. nicht die gewünschten Abfrageergebnisse.

Auswählen eindeutiger Werte

Wenn Sie wissen, dass Ihre Anweisung redundante Daten auswählt und Sie nur eindeutige Werte anzeigen möchten, können Sie in der SELECT-Klausel das Schlüsselwort DISTINCT angeben. Angenommen, jeder Ihrer Kunden, von denen einige dieselbe Telefonnummer haben, repräsentiert verschiedene Interessen. Wenn Sie sicherstellen möchten, dass jede Telefonnummer nur einmal angezeigt wird, sollte Ihre SELECT-Klausel so aussehen:

SELECT DISTINCT [txtCustomerPhone]

Angeben von Ersatznamen für Felder und Ausdrücke: Das Schlüsselwort AS

Sie können die Beschriftung ändern, die für ein Feld in der Datenbankansicht angezeigt wird, indem Sie in der SELECT-Klausel das Schlüsselwort AS und einen Feldalias angeben. Ein Feldalias ist ein Name, den Sie einem Feld in einer Abfrage zuweisen, damit die Ergebnisse besser lesbar sind. Wenn Sie beispielsweise Daten in einem Feld mit dem Namen "txtCustPhone" auswählen möchten und das Feld Telefonnummern von Kunden enthält, können Sie die Lesbarkeit Ihrer Ergebnisse verbessern, indem Sie wie folgt in der SELECT-Anweisung einen Feldalias angeben:

SELECT [txtCustPhone] AS [Customer Phone]

Hinweis : Bei Verwenden eines Ausdrucks in einer SELECT-Klausel müssen Sie einen Feldalias verwenden.

Auswählen von Daten mithilfe eines Ausdrucks

Manchmal ist es Berechnungen basierend auf den Daten untersuchen möchten oder nur einen Teil des Felds Daten abzurufen. Angenommen Sie, dass Sie das Jahr zurück, das Kunden geboren wurden, möchten auf der Grundlage der Daten im Feld BirthDate in der Datenbank. Möglicherweise die SELECT-Klausel wie folgt aussehen:

SELECT DatePart("yyyy",[BirthDate]) AS [Birth Year]

Dieser Ausdruck besteht aus den DatePart (Funktion) und zwei Argumente – "JJJJ" (eine Konstante), und [BirthDate] (ein Bezeichner).

Sie können einen beliebigen gültigen Ausdruck als Feld verwenden, wenn der Ausdruck bei einem angegebenen einzelnen Eingabewert einen einzelnen Wert ausgibt.

Seitenanfang

Weitere Informationen zur FROM-Klausel

In einer SELECT-Anweisung gibt die FROM-Klausel die Tabellen oder Abfragen mit den Daten an, welche die SELECT-Klausel verwenden soll.

Angenommen, Sie möchten die Telefonnummer eines bestimmten Kunden wissen. Vorausgesetzt, dass die Tabelle mit dem Feld, in dem diese Information gespeichert ist, "tblCustomer" heißt, lautet die FROM-Klausel wie folgt:

FROM tblCustomer

Setzen von Bezeichnern in eckige Klammern

Sie können den Namen in eckige Klammern setzen. Wenn der Name keine Leer- oder Sonderzeichen enthält (z. B. Satzzeichen), sind die eckigen Klammern optional. Enthält der Name Leer- oder Sonderzeichen, sind die eckigen Klammern verbindlich.

Tipp : Ein Namen, der Leerzeichen enthält, ist leichter lesbar und können Sie Zeit sparen, wenn Sie Entwerfen von Formularen und Berichten, aber möglicherweise sorgen, dass Sie weitere Geben Sie beim Schreiben von SQL-Anweisungen einhandeln. Berücksichtigen Sie beim Benennen von Objekten in Ihrer Datenbank dies.

Verwenden von Ersatznamen für Datenquellen

Sie können einen anderen Namen wählen, um in einer SELECT-Anweisung auf eine Datenquelle zu verweisen, indem Sie in der FROM-Klausel einen Tabellenalias angeben. Ein Tabellenalias ist ein Name, den Sie einer Datenquelle in einer Abfrage zuweisen können, wenn Sie einen Ausdruck als Datenquelle verwenden, bzw. der das Eingeben und Lesen der SQL-Anweisung vereinfacht. Dies ist besonders dann hilfreich, wenn der Name der Datenquelle lang oder schwer einzugeben ist, insbesondere wenn es mehrere Felder gibt, die denselben Namen haben, aber aus verschiedenen Tabellen stammen.

Wenn Sie beispielsweise Daten aus zwei Feldern auswählen möchten, die beide "ID" heißen und von denen eines aus der Tabelle "tblCustomer" und das andere aus der Tabelle "tblOrder" stammt, sieht Ihre SELECT-Klausel ungefähr so aus:

SELECT [tblCustomer].[ID], [tblOrder].[ID]

Durch Angeben von Tabellenaliasnamen in der FROM-Klausel kann die Abfrage einfacher eingegeben werden. Mit Tabellenaliasnamen sieht die FROM-Klausel etwa so aus:

FROM [tblCustomer] AS [C], [tblOrder] AS [O]

Sie könnten dann diese Tabellenaliase in der SELECT-Klausel wie folgt verwenden:

SELECT [C].[ID], [O].[ID]

Hinweis : Wenn Sie einen Tabellenalias angeben, können Sie in Ihrer SQL-Anweisung über den Alias oder den vollständigen Datenquellennamen auf die Datenquelle verweisen.

Verknüpfen zusammengehöriger Daten

Wenn Sie in einem Abfrageergebnis Paare mit Datensätzen aus zwei Datenquellen in einzelnen Datensätzen zusammenführen möchten, können Sie eine Verknüpfung (JOIN-Operation) durchführen. Eine Verknüpfung ist eine SQL-Operation, die angibt, wie zwei Datenquellen zusammenhängen und ob Daten aus einer Datenquelle in das Ergebnis einbezogen werden sollen, wenn es in der anderen Quelle keine entsprechenden Daten gibt.

Zum Kombinieren der Informationen aus zwei Datenquellen wenden Sie eine JOIN-Operation auf das gemeinsame Feld an. Wenn die in diesem Feld gespeicherten Werte übereinstimmen, werden die Daten aus diesen Datensätzen in den Ergebnissen kombiniert.

Zusätzlich zum Kombinieren von Daten können Sie mithilfe einer Verknüpfung auch angeben, ob Datensätze aus einer der Tabellen einbezogen werden sollen, wenn es in der dazugehörigen Tabelle keinen entsprechenden Datensatz gibt.

Angenommen, Sie Daten aus zwei Tabellen in einer Abfrage verwenden möchten: TblCustomer und TblOrder. Die beiden Tabellen haben ein Felds, CustomerID, die identifiziert eine Kunden. Jeden Eintrag in der Tabelle TblCustomer möglicherweise müssen Sie einen oder mehrere entsprechenden Datensätze in der Tabelle TblOrder, und die entsprechenden Werte durch die Werte in das Feld "CustomerID" bestimmt werden können.

Wenn Sie Tabellen so verknüpfen möchten, dass die Abfrage die Datensätze in den Tabellen kombiniert und Datensätze aus beiden Tabellen ausschließt, sofern es keinen entsprechenden Datensatz in der anderen Tabelle gibt, sieht die FROM-Klausel etwa so aus (der Zeilenumbruch wurde zum Verbessern der Lesbarkeit hinzugefügt):

FROM [tblCustomer] INNER JOIN [tblOrder]
ON [tblCustomer].[CustomerID]=[tblOrder].[CustomerID]

In Microsoft Office Access erfolgen Verknüpfungen in der FROM-Klausel einer SELECT-Anweisung. Es gibt zwei Arten von Verknüpfungen: innere Verknüpfungen (INNER JOINS) und äußere Verknüpfungen (OUTER JOINS), die in die folgenden Abschnitten erläutert werden.

Innere Verknüpfungen

Innere Verknüpfungen sind die häufigste Verknüpfungsart. Wenn eine Abfrage mit einer inneren Verknüpfung ausgeführt wird, entsprechen die in die Abfrageergebnisse einbezogenen Datensätze nur denjenigen, die in beiden verknüpften Tabellen einen gemeinsamen Wert haben.

Eine innere Verknüpfung hat folgende Syntax (der Zeilenumbruch wurde zum Verbessern der Lesbarkeit hinzugefügt):

FROM table1 INNER JOIN table2
ON table1.field1 compopr table2.field2

In der folgenden Tabelle werden die Komponenten einer INNER JOIN-Operation vorgestellt:

Teil

Beschreibung

Tabelle1, Tabelle2

Die Namen der Tabellen, aus denen Datensätze zusammengefasst werden.

Feld1, Feld2

Die Namen der Felder, die miteinander verknüpft werden. Falls es sich nicht um numerische Felder handelt, müssen die Felder denselben Datentyp aufweisen und dieselben Daten enthalten. Es ist jedoch nicht erforderlich, dass sie denselben Namen haben.

Vergleichsoperator

Ein beliebiger relationaler Vergleichsoperator: "=," "<," ">," "<=," ">=," oder "<>".

Äußere Verknüpfungen

Äußere Verknüpfungen ähneln inneren Verknüpfungen dahingehend, dass sie eine Abfrage anweisen, wie Informationen aus zwei Quellen zu kombinieren sind. Der Unterschied besteht darin, dass sie auch angeben, ob Daten einbezogen werden sollen, wenn kein gemeinsamer Wert vorhanden ist. Äußere Verknüpfungen erfolgen in eine Richtung. Sie können angeben, ob alle Datensätze aus der in der Verknüpfung angegebenen Datenquelle (LEFT JOIN) oder alle Datensätze aus der zweiten Datenquelle in der Verknüpfung (RIGHT JOIN) einbezogen werden sollen.

Eine äußere Verknüpfung hat folgende Syntax:

FROM Tabelle1 [LINKS | RIGHT] JOIN Tabelle2
AUF table1.field1compopr table2.field2

In der folgenden Tabelle werden die Komponenten einer LEFT JOIN- und RIGHT JOIN-Operation vorgestellt:

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 denselben Datentyp haben und dieselbe Art von Daten enthalten, jedoch nicht denselben Namen haben.

Vergleichsoperator

Ein beliebiger relationaler Vergleichsoperator: "=," "<," ">," "<=," ">=," oder "<>".

Weitere Informationen zu Verknüpfungen finden Sie im Artikel Verknüpfen von Tabellen und Abfragen.

Seitenanfang

Weitere Informationen zur WHERE-Klausel

Wenn Sie Daten verwenden, um die Anzahl der Datensätze zu beschränken, die in einer Abfrage zurückgegeben werden soll, verwenden Sie die Abfrage Kriterien in die WHERE-Klausel einer SELECT-Anweisung. Ein Abfragekriterium ist vergleichbar mit einer Formel – es ist eine Zeichenfolge, die aus dem Feld verweisen, Konstanten und Operatoren bestehen kann. Gehören zum Datensatztyp Ausdruck Abfragekriterien.

In der folgenden Tabelle werden einige Beispielkriterien und ihre Funktionsweise vorgestellt.

Kriterien

Beschreibung

>25 und <50

Dieses Kriterium gilt für ein Feld vom Typ "Zahl", z. B. "Preis" oder "Lagerbestand". Es schließt nur diejenigen Datensätze ein, bei denen das Feld einen Wert größer 25 oder kleiner 50 enthält.

DateDiff ("JJJJ", [Geburtsdatum], Date()) > 30

Dieses Kriterium gilt für ein Feld vom Typ "Datum/Uhrzeit", z. B. "Geburtsdatum". Das Abfrageergebnis enthält nur Datensätze, bei denen die Anzahl der Jahre zwischen dem Geburtsdatum einer Person und dem aktuellen Datum größer 30 ist.

Ist Null

Dieses Kriterium kann für alle Arten von Feldern gelten, um Datensätze mit dem Feldwert Null anzuzeigen.

Wie die vorherige Tabelle veranschaulicht, können Kriterien abhängig vom Datentyp des Felds, für das die Kriterien gelten, und Ihre spezifischen Anforderungen sehr unterschiedlich aussehen. Einige Kriterien sind einfach und basieren auf einfachen Operatoren und Konstanten. Andere sind komplex, arbeiten mit Funktionen und speziellen Operatoren und umfassen Verweise auf andere Felder.

Wichtig : Wenn Sie ein Feld mit einer Aggregatfunktion verwendet wird, können nicht Sie Kriterien für dieses Feld in einer WHERE-Klausel angeben. Verwenden Sie stattdessen eine HAVING-Klausel zum Festlegen von Kriterien für aggregierte Felder aus. Weitere Informationen finden Sie im Abschnitt Arbeiten mit Zusammenfassungsdaten: GROUP BY und HAVING.

Syntax der WHERE-Klausel

Eine WHERE-Klausel hat folgende Basissyntax:

WHERE field = criterion

Angenommen, Sie suchen die Telefonnummer eines Kunden, erinnern sich aber nur noch daran, dass sein Nachname Casselman lautet. Anstatt alle Telefonnummern in Ihrer Datenbank zu durchsuchen, können Sie eine WHERE-Klausel angeben, um die Ergebnisse zu begrenzen und die gewünschte Telefonnummer schneller zu finden. Sofern Nachnamen in einem Feld mit dem Namen "Nachname" gespeichert sind, sieht die WHERE-Klausel wie folgt aus:

WHERE [LastName]='Bagel'

Hinweis : Sie verfügen nicht auf die Übereinstimmung von Werte die Kriterien in der WHERE-Klausel basieren. Sie können andere Vergleichsoperatoren, z. B. größer als (>) oder kleiner als (<) verwenden. Beispielsweise , in DEM [Price] > 100.

Kombinieren von Datenquellen mithilfe einer WHERE-Klausel

Es kann vorkommen, dass Sie Datenquellen auf Basis von Feldern vergleichen möchten, die übereinstimmende Daten enthalten, jedoch abweichende Datentypen aufweisen. So kann beispielsweise ein Feld in einer Tabelle beispielsweise den Datentyp "Zahl" haben, und Sie möchten dieses Feld mit einem Feld in einer anderen Tabelle vergleichen, das mit dem Datentyp "Text" formatiert ist.

Eine Verknüpfung von Feldern mit unterschiedlichen Datentypen ist nicht möglich. Zum Kombinieren von Daten aus zwei Datenquellen auf Basis von Werten in Feldern mit unterschiedlichen Datentypen müssen Sie eine WHERE-Klausel erstellen, die ein Feld als Kriterium für das andere Feld verwendet, indem das Schlüsselwort LIKE verwendet wird.

Angenommen, Sie möchten Daten aus Tabelle1 und Tabelle2 verwenden, aber nur, wenn die Daten in Feld1 (einem Textfeld in Tabelle1) den Daten in Feld2 (einem Zahlenfeld in Tabelle2 ) entsprechen. Ihre WHERE-Klausel sollte etwa so aussehen:

WHERE field1 LIKE field2

Weitere Informationen zum Erstellen von Kriterien in einer WHERE-Klausel verwenden finden Sie im Artikel Beispiele für Abfragekriterien.

Seitenanfang

Hinweis : Haftungsausschluss für maschinelle Übersetzungen: Dieser Artikel wurde mithilfe eines Computersystems und ohne jegliche Bearbeitung durch Personen übersetzt. Microsoft bietet solche maschinellen Übersetzungen als Hilfestellung für Benutzer ohne Englischkenntnisse an, damit Sie von den Informationen zu Produkten, Diensten und Technologien von Microsoft profitieren können. Da es sich bei diesem Artikel um eine maschinelle Übersetzung handelt, enthält er möglicherweise Fehler in Bezug auf (Fach-)Terminologie, Syntax und/oder Grammatik.

Teilen Facebook Facebook Twitter Twitter E-Mail E-Mail

War diese Information hilfreich?

Sehr gut. Noch anderes Feedback?

Was können wir verbessern?

Vielen Dank für Ihr Feedback!

×