WHERE clause (Microsoft Access SQL)

S’applique à : Access 2013 | Access 2016

Spécifie quels enregistrements figurant dans les tables répertoriées dans la clause FROM sont affectés par une instruction SELECT, UPDATE ou DELETE.

Syntaxe

SELECT fieldlist FROM tableexpression WHERE criteria

Une instruction SELECT contenant une clause WHERE est composée des arguments suivants :

Élément Description
fieldlist Nom du ou des champs à extraire avec leurs alias de nom de champ, prédicats de sélection (ALL, DISTINCT, DISTINCTROW, or TOP) ou autres options d’instruction SELECT.
expressiontable Nom de la table ou des tables à partir desquelles les données sont extraites.
criteria Expression que les enregistrements doivent satisfaire pour être inclus dans le résultat de la requête.

Remarques

Le moteur de base de données Access sélectionne les enregistrements qui répondent aux conditions répertoriées dans la clause WHERE. Si vous ne spécifiez pas de clause WHERE, votre requête retourne toutes les lignes de la table. Si vous spécifiez plusieurs tables dans votre requête et que vous n'avez pas inclus de clause WHERE ou JOIN, votre requête génère un produit cartésien des tables.

La clause WHERE est facultative mais, si elle est présente, elle doit suivre la clause FROM. Par exemple, vous pouvez sélectionner tous les employés du service commercial (WHERE Dept = 'Sales') ou tous les clients âgés de 18 à 30 ans () ou tous les clients âgés de 18 à 30 ans (WHERE Age Between 18 And 30).

Si vous n’utilisez pas de clause JOIN pour effectuer des opérations de jointure SQL sur plusieurs tables, l’objet Recordset résultant ne peut pas être mis à jour.

La clause WHERE est similaire à la clause HAVING. WHERE détermine les enregistrements à sélectionner. De même, une fois que GROUP BY a regroupé les enregistrements, HAVING détermine les enregistrements qui doivent être affichés.

Utilisez la clause WHERE pour éliminer les enregistrements que vous ne souhaitez pas regrouper par une clause GROUP BY.

Utilisez plusieurs expressions différentes pour déterminer les enregistrements devant être renvoyés par l'instruction SQL. Par exemple, l'instruction SQL suivante sélectionne tous les employés dont le salaire dépasse 21 000 $ :

SELECT LastName, Salary 
FROM Employees 
WHERE Salary > 21000;

Une clause WHERE peut contenir jusqu'à 40 expressions liées par des opérateurs logiques, tels que And et Or.

Lorsque vous entrez un nom de champ contenant un espace ou un signe de ponctuation, placez ce nom entre crochets ([ ]). Par exemple, une table d’informations client peut inclure des informations sur des clients spécifiques :

SELECT [Customer's Favorite Restaurant]

Lorsque vous spécifiez l’argument critère , les littéraux de date doivent être au format américain, même si vous n’utilisez pas la version américaine du moteur de base de données Microsoft Jet. Par exemple, le 10 mai 1996, s'écrit sous la forme 10/5/96 en France et 5/10/96 aux États-Unis. N'oubliez pas d'indiquer vos littéraux date entre deux caractères #, comme dans les exemples ci-dessous.

Pour trouver des enregistrements daté du 10 mai 1996 dans une base de données française, vous devez utiliser l'instruction SQL suivante :

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

Vous pouvez également utiliser la fonction DateValue qui reconnaît les paramètres régionaux de Microsoft Windows®. Par exemple, utilisez ce code pour les États-Unis :

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

Par exemple, utilisez ce code pour la France :

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

Remarque

[!REMARQUE] Si la colonne référencée dans la chaîne des critères est du type GUID, l'expression des critères suit une syntaxe légèrement différente :

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

Respectez bien l'imbrication des parenthèses et la position des tirets.

Exemple

Dans cet exemple, le champ hypothétique Salary est censé exister dans la table Employees. Notez que ce champ n'existe pas dans la table Employees de la base de données Northwind.

Dans cet exemple, sont sélectionnés les champs LastName et FirstName de chaque enregistrement dont le nom de famille est King. Il appelle la procédure EnumFields que vous pouvez trouver dans l’exemple d’instruction SELECT.

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 

Voir aussi

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.