Modifier des instructions SQL pour affiner les résultats d’une requête

S’applique à
Access pour Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Si vos requêtes ne sont pas assez intensives, l’ajout de quelques instructions SQL de base peut vous aider à cibler 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.

Contenu de cet article

Créer une instruction Select

Une instruction SQL select comporte deux à trois clauses. La clause SELECT indique à la base de données où rechercher les données et lui demande de renvoyer 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 à part à la fin de l’instruction SQL.

L’instruction de sélection suivante demande à Access d’obtenir des informations à partir des colonnes Adresse de courrier et Société, 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 contient trois clauses : SELECT, FROM et WHERE.

1. La clause SELECT répertorie les colonnes qui contiennent les données que vous souhaitez utiliser et possède un opérateur (SELECT) suivi de deux identificateurs (E-mail Address et Company). Si un identificateur contient des espaces ou des caractères spéciaux (par exemple, « Adresse de messagerie »), placez-le entre des 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 comporte 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 de sélection simple.

Voici une liste des clauses SQL courantes :

clause SQL Action Requis ?
SELECT Répertorie les champs qui contiennent des données d’intérêt. 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 auxquels chaque enregistrement doit être inclus dans les résultats. Non
TRIER PAR Spécifie la manière de trier les résultats. Non
GROUP BY Dans une instruction SQL contenant des fonctions d’agrégation, répertorie les champs qui ne sont pas résumés dans la clause SELECT. Seulement s’il existe de tels champs
HAVING Dans une instruction SQL qui contient des fonctions d’agrégation, spécifie les conditions qui s’appliquent aux champs synthétisés dans l’instruction SELECT. Non

Chaque clause SQL est constitué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 d’une colonne. [Adresse e-mail] et Société
opérateur Mot clé qui représente une action ou modifie une action. AS
constante Une valeur immuable, comme un nombre ou NULL. 42
expression Combinaison d’identificateurs, d’opérateurs, de constantes et de fonctions dont le résultat est une valeur unique. >= Produits. [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 qu’un numéro de téléphone répertorié qu’une seule fois, votre clause SELECT serait la suivante :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 (un 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 si vous avez plusieurs champs de différentes tables qui ont le même nom. Pour sélectionner des données dans 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 les 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]
Les jointures permettent de combiner des paires d’enregistrements de deux sources de données en un seul résultat ou d’inclure ou d’inclure des enregistrements de l’une des tables s’il n’existe aucun enregistrement correspondant dans la table associée.
Joindre les tables afin que la requête combine les éléments des tables et exclue les éléments lorsqu’il n’existe aucun enregistrement correspondant dans l’autre table
Voici à quoi pourrait 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, 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 les données lorsqu’il n’existe aucune valeur commune. Les jointures externes sont directionnelles, ce qui signifie que vous pouvez indiquer 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 dite droite). Une jointure externe a la syntaxe SQL suivante :

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

Pour plus d’informations sur l’utilisation de jointures dans une requête, voir 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 renvoyés dans une requête. Découvrez 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 vous souveniez que de son nom de famille Bagel. Dans cet exemple, les noms sont stockés dans un champ Nom, donc la syntaxe SQL serait :

WHERE [LastName]='Bagel'

Utilisez également la clause WHERE pour combiner des sources de données pour des colonnes qui ont des données correspondantes, mais des types de données différents. Cela peut s’avérer très 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 Actifs et d’une table Employés, uniquement lorsque le type d’actif dans le champ Type d’actif de la table Actifs a le numéro 3 dans le champ Quantité de la table Employés, 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 de sélection similaires. Par exemple, si votre base de données comporte une table Produits et une table Services et qu’elles comportent toutes deux trois champs : offre exclusive, produit ou service, prix, garantie ou garantie. Bien que la table Produits stocke les informations de garantie et que celle 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 ceci :

SELECT name, price, warranty, exclusive_offer
FROM Products
UNION ALL
SELECT 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 dans un seul champ de sortie. Pour inclure des lignes en double dans les résultats, utilisez l’opérateur TOUT.

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 des types de données compatibles. Pour les besoins d’une requête d’union, les types de données Nombre et Texte sont compatibles.

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

Haut de la page