Modifier des instructions SQL pour affiner les résultats d’une requête
Applies ToAccess pour Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Si vos requêtes ne fonctionnent pas assez dur, l’ajout d’instructions SQL de base peut vous aider à concentrer vos résultats. Examinons quelques types d’instructions SQL et les clauses ou parties que vous pouvez modifier pour obtenir les résultats souhaités.

Remarque :  Cet article ne s’applique pas aux applications Access Web App (type de base de données que vous créez dans Access et publiez en ligne).

Contenu de cet article

Créer une instruction Select

Une instruction SQL select a deux à trois clauses. La clause SELECT indique à la base de données où rechercher les données et lui demande de retourner un résultat spécifique.

Remarque :  Les instructions SELECT se terminent toujours par un point-virgule (;) soit à la fin de la dernière clause, soit sur une ligne à la fin de l’instruction SQL.

L’instruction select suivante demande à Access d’obtenir des informations à partir des colonnes Adresse de messagerie et Entreprise, à partir de la table Contacts, en particulier là où il trouve « Seattle » dans la colonne Ville.

Onglet d’objet SQL montrant une instruction SELECT

La requête ci-dessus comporte trois clauses SELECT, FROM et WHERE.

1. La clause SELECT répertorie les colonnes qui contiennent les données que vous souhaitez utiliser et a un opérateur (SELECT) suivi de deux identificateurs (Adresse de messagerie et Société). Si un identificateur comporte des espaces ou des caractères spéciaux (tels que « Adresse de messagerie »), placez l’identificateur entre crochets.

2. La clause FROM identifie la table source. Dans cet exemple, il a un opérateur (FROM) suivi d’un identificateur (Contacts).

3. La clause WHERE est une clause facultative. L’exemple a un opérateur (WHERE) suivi d’une expression (City="Seattle »).

Pour plus d’informations sur les requêtes de sélection, consultez Créer une requête sélection simple.

Voici une liste de clauses SQL courantes :

Clause SQL

Fonction

Obligatoire ?

SELECT

Répertorie les champs qui contiennent des données intéressantes.

Oui

FROM

Répertorie les tables qui contiennent les champs répertoriés dans la clause SELECT.

Oui

WHERE

Spécifie les critères de champ qui doivent être remplis par chaque enregistrement à inclure dans les résultats.

Non

ORDER BY

Spécifie comment trier les résultats.

Non

GROUP BY

Dans une instruction SQL qui contient des fonctions d’agrégation, répertorie les champs qui ne sont pas résumés dans la clause SELECT.

Uniquement s’il existe de tels champs

HAVING

Dans une instruction SQL qui contient des fonctions d’agrégation, spécifie des conditions qui s’appliquent aux champs qui sont résumés dans l’instruction SELECT.

Non

Chaque clause SQL est composée de termes. Voici une liste de certains termes SQL courants.

Terme SQL

Définition

Exemple

Identificateur

Nom que vous utilisez pour identifier un objet de base de données, comme le nom de la colonne.

[Adresse de messagerie] et société

opérateur

Mot clé qui représente une action ou modifie une action.

AS

constante

Valeur qui ne change pas, telle qu’un nombre ou NULL.

42

expression

Combinaison d’identificateurs, d’opérateurs, de constantes et de fonctions qui prend la valeur d’une valeur unique.

>= Products. [Prix unitaire]

Haut de la page

Personnalisation de la clause SELECT

Personnaliser

Exemple

Pour afficher uniquement les valeurs distinctes.

Utilisez le mot clé DISTINCT dans votre clause SELECT.

Par exemple, si vos clients proviennent de plusieurs succursales différentes et que certains ont le même numéro de téléphone et que vous ne souhaitez voir un numéro de téléphone répertorié qu’une seule fois, votre clause SELECT se présente comme suit :

SELECT DISTINCT [txtCustomerPhone] 

Pour modifier la façon dont un identificateur apparaît en mode Feuille de données pour améliorer la lisibilité.

Utilisez l’opérateur AS (mot clé qui représente une action ou modifie une action) avec un alias de champ dans votre clause SELECT. Un alias de champ est un nom que vous attribuez à un champ pour faciliter la lecture des résultats.

SELECT [txtCustPhone] AS [Customer Phone]

Personnalisation de la clause FROM

Personnaliser

Exemple

Vous pouvez utiliser un alias de table ou un autre nom que vous attribuez à une table dans une instruction select. Un alias de table est utile si le nom de la table est long, en particulier lorsque vous avez plusieurs champs qui ont le même nom à partir de tables différentes.

Pour sélectionner des données à partir de deux champs, tous deux nommés ID, dont l’un provient de la table tblCustomer et l’autre de la table tblOrder :

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

Utilisez l’opérateur AS pour définir des alias de table dans la clause FROM :

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

Vous pouvez ensuite utiliser ces alias de table dans votre clause SELECT, comme suit :

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

Utilisez des jointures pour combiner des paires d’enregistrements de deux sources de données en résultat unique ou pour spécifier s’il faut inclure des enregistrements de l’une ou l’autre table s’il n’y a pas d’enregistrement correspondant dans la table associée.

Joindre les tables afin que la requête combine les éléments des tables et exclut les éléments lorsqu’il n’y a pas d’enregistrement correspondant dans l’autre table

Voici à quoi peut ressembler la clause FROM :

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

À propos de l’utilisation des jointures

Il existe deux types de jointures : les jointures internes et externes. Les jointures internes sont plus courantes dans les requêtes. Lorsque vous exécutez une requête avec une jointure interne, le résultat affiche uniquement les éléments pour lesquels une valeur commune existe dans les deux tables jointes.

Les jointures externes spécifient s’il faut inclure des données pour lesquelles aucune valeur commune n’existe. Les jointures externes sont directionnelles, ce qui signifie que vous pouvez spécifier s’il faut inclure tous les enregistrements de la première table spécifiée dans la jointure (jointure gauche) ou inclure tous les enregistrements de la deuxième table dans la jointure (jointure droite). Une jointure externe a la syntaxe SQL suivante :

FROM table1 [ LEFT | RIGHT ] JOIN table2ON table1.field1 = table2.field2

Pour plus d’informations sur l’utilisation des jointures dans une requête, consultez Joindre des tables et des requêtes.

Haut de la page

Personnalisation de la clause WHERE

La clause WHERE inclut des critères qui permettent de limiter le nombre d’éléments retournés dans une requête. Consultez des exemples de critères de requête et leur fonctionnement.

Un exemple de la façon dont vous pouvez personnaliser la clause WHERE de base consiste à limiter les résultats d’une requête ; Supposons que vous souhaitiez localiser le numéro de téléphone d’un client et que vous ne puissiez mémoriser que son nom de famille en tant que Bagel. Dans cet exemple, les noms de famille étant stockés dans un champ LastName, la syntaxe SQL est la suivante :

WHERE [LastName]='Bagel'

Utilisez également la clause WHERE pour combiner des sources de données pour les colonnes qui ont des données correspondantes, mais des types de données différents. Cela est pratique, car vous ne pouvez pas créer de jointure entre des champs qui ont des types de données différents. Utilisez un champ comme critère pour l’autre champ, avec le mot clé LIKE . Par exemple, si vous souhaitez utiliser les données d’une table Assets et d’une table Employees, uniquement lorsque le type de ressource dans le champ de type de ressource de la table Assets a le nombre 3 dans le champ Quantity de la table Employees, voici à quoi ressemblerait votre clause WHERE :

WHERE field1 LIKE field2

Important :  Vous ne pouvez pas spécifier de critères pour un champ utilisé avec une fonction d’agrégation dans une clause WHERE. Vous devez utiliser une clause HAVING pour spécifier les critères à appliquer aux champs agrégés.

Haut de la page

Personnalisation avec l’opérateur UNION

Utilisez l’opérateur UNION lorsque vous souhaitez afficher une vue combinée des résultats de plusieurs requêtes select similaires. Par exemple, si votre base de données comporte une table Products et une table Services et qu’elles ont toutes deux trois champs : offre exclusive ou produit ou service, prix, garantie ou garantie. Bien que la table Products stocke les informations de garantie et que la table Services stocke les informations de garantie, les informations de base sont les mêmes. Vous pouvez utiliser une requête union pour combiner les trois champs des deux tables comme suit :

SELECT name, price, warranty, exclusive_offerFROM ProductsUNION ALLSELECT name, price, guarantee, exclusive_offer FROM Services;

Lorsque vous exécutez la requête, les données de chaque ensemble de champs correspondants sont combinées en un seul champ de sortie. Pour inclure des lignes en double dans les résultats, utilisez l’opérateur ALL.

Remarque :  L’instruction Select doit avoir le même nombre de champs de sortie, dans le même ordre, et avec les mêmes types de données ou compatibles. Pour les besoins d’une requête union, les types de données Number et Text sont compatibles.

Pour plus d’informations sur les requêtes Union, consultez Utilisation d’une requête union pour afficher un résultat unifié à partir de plusieurs requêtes.

Haut de la page

Besoin d’aide ?

Vous voulez plus d’options ?

Explorez les avantages de l’abonnement, parcourez les cours de formation, découvrez comment sécuriser votre appareil, etc.

Les communautés vous permettent de poser des questions et d'y répondre, de donner vos commentaires et de bénéficier de l'avis d'experts aux connaissances approfondies.