WHERE-Klausel (Microsoft Access SQL)

Gilt für: Access 2013 | Access 2016

Gibt an, welche Datensätze aus den in der FROM-Klausel aufgeführten Tabellen von einer SELECT-, UPDATE- oder DELETE-Anweisung betroffen sind.

Syntax

SELECT fieldlist FROM tableexpression WHERE criteria

Eine SELECT-Anweisung mit einer WHERE-Klausel enthält folgende Bestandteile:

Teil Beschreibung
fieldlist Die Namen der Felder, die zusammen mit Aliasen für Feldnamen, Auswahlprädikaten (ALL, DISTINCT, DISTINCTROW oder TOP) oder anderen SELECT-Anweisungsoptionen abgerufen werden sollen.
Tabellenausdruck Die Namen der Tabellen, aus denen Daten abgerufen werden.
Kriterien Ein Ausdruck, den die Datensätze erfüllen müssen, damit sie in den Abfrageergebnissen berücksichtigt werden.

HinwBemerkungeneise

Die Access-Datenbank-Engine wählt die Datensätze aus, die die in der WHERE-Klausel aufgeführten Bedingungen erfüllen. Wenn Sie keine WHERE-Klausel angeben, gibt die Abfrage alle Zeilen aus der Tabelle zurück. Wenn Sie mehrere Tabellen in der Abfrage angeben, ohne eine WHERE- oder JOIN-Klausel zu verwenden, generiert die Abfrage ein kartesisches Produkt aus den Tabellen.

Die WHERE-Klausel ist optional, doch wenn sie verwendet wird, folgt sie auf die FROM-Klausel. Sie können beispielsweise alle Mitarbeiter im Vertrieb (WHERE Dept = 'Sales') oder alle Kunden zwischen 18 und 30 Jahren () oder alle Kunden im Alter von 18 bis 30 () auswählen.WHERE Age Between 18 And 30

Wenn Sie keine JOIN-Klausel verwenden, um SQL-Joinvorgänge für mehrere Tabellen auszuführen, ist das resultierende Recordset-Objekt nicht aktualisierbar.

Die WHERE-Klausel ist mit der HAVING-Klausel vergleichbar. WHERE bestimmt, welche Datensätze ausgewählt werden. Nachdem die Datensätze mithilfe von GROUP BY gruppiert wurden, bestimmt HAVING außerdem, welche Datensätze angezeigt werden.

Verwenden Sie die WHERE-Klausel, um Datensätze zu entfernen, die nicht durch eine GROUP BY-Klausel gruppiert werden sollen.

Sie können verschiedene Ausdrücke verwenden, um zu bestimmen, welche Datensätze von der SQL-Anweisung zurückgegeben werden. Mit der folgenden SQL-Anweisung werden beispielsweise alle Mitarbeiter ausgewählt, deren Gehalt über 21.000 Euro lieg:

SELECT LastName, Salary 
FROM Employees 
WHERE Salary > 21000;

Eine WHERE-Klausel kann bis zu 40 Ausdrücke enthalten, die jeweils durch logische Operatoren wie Und bzw. Oder miteinander verknüpft sind.

Wenn Sie einen Feldnamen eingeben, der ein Leerzeichen oder ein Satzzeichen enthält, müssen Sie den Namen in Klammern ([ ]) einschließen. Beispielsweise kann eine Kundeninformationstabelle Informationen zu bestimmten Kunden enthalten:

SELECT [Customer's Favorite Restaurant]

Wenn Sie das Argument criteria angeben, müssen Datumsliterale im US-Format vorliegen, auch wenn Sie nicht die US-Version der Microsoft Jet-Datenbank-Engine verwenden. Der 10. Mai 1996 wird beispielsweise am 10.5.96 im Vereinigten Königreich und am 10.05.96 im USA geschrieben. Stellen Sie sicher, dass Sie Ihre Datumsliterale mit dem Nummernzeichen (#) einschließen, wie in den folgenden Beispielen gezeigt.

Verwenden Sie folgende SQL-Anweisung, um Datensätze vom 10. Mai 1996 in einer britischen Datenbank zu finden:

SELECT * 
FROM Orders 
WHERE ShippedDate = #5/10/96#;

Sie können auch die DateValue-Funktion verwenden, bei der die internationalen Einstellungen von Microsoft Windows® beachtet werden. Verwenden Sie beispielsweise den folgenden Code für die USA:

SELECT * 
FROM Orders 
WHERE ShippedDate = DateValue('5/10/96');

Verwenden Sie diesen Code für Großbritannien:

SELECT * 
FROM Orders 
WHERE ShippedDate = DateValue('10/5/96');

Hinweis

Wenn die Spalte, auf die in der Kriterienzeichenfolge verwiesen wird, den Datentyp GUID besitzt, wird im Kriterienausdruck eine etwas andere Syntax verwendet:

WHERE ReplicaID = {GUID {12345678-90AB-CDEF-1234-567890ABCDEF}}

Sie müssen die geschachtelten geschweiften Klammern und Trennstriche wie dargestellt verwenden.

Beispiel

Im folgenden Beispiel wird davon ausgegangen, dass die Employees-Tabelle das hypothetische Feld Salary enthält. Beachten Sie jedoch, dass dieses Feld in Wirklichkeit nicht in der Mitarbeitertabelle der Northwind-Datenbank enthalten ist.

In diesem Beispiel werden die Felder LastName und FirstName aller Datensätze ausgewählt, die als Nachnamen den Eintrag King aufweisen. Dabei wird die EnumFields-Prozedur aufgerufen, die im Beispiel für die SELECT-Anweisung enthalten ist.

Sub WhereX() 
 
    Dim dbs As Database, rst As Recordset 
 
    ' Modify this line to include the path to Northwind 
    ' on your computer. 
    Set dbs = OpenDatabase("Northwind.mdb") 
 
    ' Select records from the Employees table where the 
    ' last name is King. 
    Set rst = dbs.OpenRecordset("SELECT LastName, " _ 
        & "FirstName FROM Employees " _ 
        & "WHERE LastName = 'King';") 
     
    ' Populate the Recordset. 
    rst.MoveLast 
     
    ' Call EnumFields to print the contents of the 
    ' Recordset. 
    EnumFields rst, 12 
 
    dbs.Close 
 
End Sub 

Siehe auch

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.