Utiliser une requête Union pour combiner plusieurs requêtes dans un seul résultat

Utiliser une requête Union pour combiner plusieurs requêtes dans un seul résultat

Important :  Cet article a été traduit automatiquement, voir l’avertissement. Vous pouvez consulter la version en anglais de cet article ici.

Supposons que votre base de données Access contienne deux tables non liées – celui qui stocke les données client et une autre qui stocke les données sur les fournisseurs – et les deux tables ont un champ d’informations de contact. Vous voulez voir les informations de contact des deux tables dans un seul affichage. Pour ce faire, commencez par créer une requête sélection pour chaque table récupérer les informations de contact et puis combiner les résultats en créant une requête union.

Remarque : Le contenu de cet article est destiné à utiliser avec les bases de données de bureau Access. Vous ne pouvez pas créer ou utiliser une requête union dans les bases de données web Access ou des applications web Access.

Vous avez besoin d’un rappel sur la création de requêtes sélection de base ? Voir créer une requête sélection simple.

Pour commencer, voici deux informations sur la création d’une requête Union :

  • Les requêtes Sélection que vous combinez en une requête Union doivent posséder le même nombre de champs de destination, dans le même ordre et avec des types de données identiques ou compatibles. Lorsque vous exécutez une requête Union, les données de chaque jeu de champs correspondants sont combinées dans un champ de destination, de sorte que le résultat de la requête dispose du même nombre de champs que chacune des instructions SELECT.

  • Une requête Union est une requête SQL, elle doit par conséquent être écrite directement en langage SQL. Vous devez basculer en Mode SQL pour écrire des requêtes SQL, notamment les requêtes Union.

Étape 1 : Créer les requêtes Sélection

Remarque : Même si vous pouvez inclure plusieurs tables ou requêtes dans une requête, cette procédure suppose que chacune de vos requêtes Sélection inclut des données provenant d’une seule table.

  1. Sous l’onglet Créer, dans le groupe Requêtes, cliquez sur Création de requête.

  2. Dans la boîte de dialogue Afficher la table, double-cliquez sur la table comprenant les champs que vous voulez inclure. La table est ajoutée à la fenêtre de création de la requête.

  3. Fermez la boîte de dialogue Afficher la table.

  4. Dans la fenêtre de création de la requête, double-cliquez sur chacun des champs à inclure.
    Lors de la sélection des champs, assurez-vous d’ajouter le même nombre de champs, dans le même ordre, que ceux ajoutés aux autres requêtes Sélection. Soyez particulièrement attentif aux types de données des champs, et vérifiez qu’ils sont compatibles avec ceux des champs se trouvant à la même position dans les autres requêtes que vous combinez. Par exemple, si votre première requête Sélection comporte cinq champs, le premier d’entre eux contenant des données date/heure, assurez-vous que chacune des autres requêtes Sélection que vous combinez comporte également cinq champs dont le premier contient des données date/heure, et ainsi de suite.

  5. Vous pouvez également ajouter des critères à vos champs en tapant les expressions appropriées dans la ligne critères de la grille des champs.

  6. Une fois que vous avez terminé d’ajouter les champs et critères de champs, vous devez exécuter la requête sélection et vérifier le résultat. Sous l’onglet Création, dans le groupe résultats, cliquez sur exécuter.

  7. Basculez la requête en mode Création.

  8. Enregistrez la requête Sélection et laissez-la ouverte.

  9. Répétez cette procédure pour chacune des requêtes Sélection à combiner.

Pour plus d’informations sur l’utilisation de critères dans une requête, voir appliquer des critères à une requête.

Étape 2 : Combiner les requêtes Sélection

Dans cette étape, vous créez la requête union en utilisant des instructions SQL. (Pour plus d’informations, voir la section syntaxe SQL , ci-dessous).

  1. Sous l’onglet Créer, dans le groupe Requêtes, cliquez sur Création de requête.

  2. Fermez la boîte de dialogue Afficher la table.

  3. Dans l’onglet Créer, dans le groupe Requêtes, cliquez sur Union.

Access masque la fenêtre de création de requête et affiche l’onglet Mode SQL de l’objet. L’onglet Mode SQL de l’objet est pour l’instant vide.

  1. Cliquez sur l’onglet de la première requête Sélection à combiner à la requête Union.

  2. Sous l’onglet accueil, cliquez sur affichage > Mode SQL.

  3. Copiez l’instruction SQL pour la requête Sélection. Cliquez sur l’onglet de la requête Union que vous avez commencé à créer à l’étape 1.

  4. Collez l’instruction SQL pour la requête Sélection dans l’onglet Mode SQL de l’objet de la requête Union.

  5. Supprimez le point-virgule (;) à la fin de l’instruction SQL de la requête Sélection.

  6. Appuyez sur ENTRÉE pour déplacer le curseur vers le bas d’une ligne, puis tapez UNION sur la nouvelle ligne.

  7. Cliquez sur l’onglet de la requête Sélection suivante à combiner à la requête Union.

  8. Répétez les étapes 5 à 10 jusqu’à ce que toutes les instructions SQL pour les requêtes Sélection aient été copiées-collées dans la fenêtre Mode SQL de la requête Union. Ne supprimez pas le point-virgule ou ne tapez rien à la suite de l’instruction SQL de la dernière requête Sélection.

  9. Sous l’onglet Créer, dans le groupe Résultats, cliquez sur Exécuter.

Les résultats de votre requête Union apparaissent en mode Feuille de données.

Haut de la Page

Conseils d’utilisation des requêtes Union

  • Pour être en mesure de distinguer de quelle table proviennent les lignes, ajoutez une chaîne de texte en tant que champ dans chacune de vos instructions SELECT.

    Par exemple, si une instruction SELECT récupère des champs d’une table nommée Produits, et qu’une autre instruction SELECT récupère ceux d’une table nommée Services, ajoutez la chaîne « Produit » en tant que champ à la fin de la première instruction et « Service » à la fin de la seconde. Vous pouvez également affecter un alias de champ (« type » par exemple) aux chaînes à l’aide du mot-clé AS, comme cela est indiqué dans l’exemple suivant :

    SELECT field1, field2, ... "Product" AS type

    SELECT field1, field2, ... "Service" AS type

    Le résultat de la requête devrait inclure un champ intitulé « type » indiquant si la ligne vient de la table Produits ou de la table Services.

  • Chaque mot-clé UNION combine les instructions SELECT qui se trouvent immédiatement avant et après. Si vous utilisez le mot-clé ALL avec certains des mots-clés UNION de votre requête, mais pas d’autres, les résultats comprendront les lignes en double des paires d’instructions SELECT combinées à l’aide de UNION ALL, mais pas celles des instructions SELECT combinées à l’aide de UNION sans le mot-clé ALL.

  • Le nombre, le type de données et l’ordre des champs des requêtes Sélection doivent correspondre. Vous pouvez utiliser des expressions, telles que des calculs ou des sous-requêtes, pour les faire correspondre.

    Par exemple, vous pouvez faire correspondre un champ d’année sur deux caractères à un champ d’année sur quatre caractères en utilisant la fonction Droite pour extraire les deux derniers chiffres de l’année sur quatre caractères.

Utiliser les résultats d’une requête Union pour créer une nouvelle table

Tout d’abord, utiliser la requête union comme entrée d’une nouvelle requête sélection et utilisez cette requête sélection comme base d’une requête Création de table, comme indiqué dans les étapes suivantes :

  1. Créez et enregistrez la requête Union.

  2. Sous l’onglet Créer, dans le groupe Requêtes, cliquez sur Création de requête.

  3. Dans la boîte de dialogue Afficher la table, cliquez sur l’onglet Requêtes.

  4. Double-cliquez sur votre requête Union, puis fermez la boîte de dialogue Afficher la table.

    Remarque : Si un message de sécurité s’affiche dans la Barre des messages, des requêtes d’action telles que des requêtes Création de table peuvent être désactivées. Pour activer les requêtes d’action, cliquez sur Activer le contenu dans la barre des messages.

  5. Dans la grille de création de requête, sur l’onglet d’objet de votre requête Union, double-cliquez sur l’astérisque (*) afin d’utiliser tous les champs de la requête Union pour créer une table.

  6. Sous l’onglet Créer, accédez au groupe Type de requête et cliquez sur Création de table.

  7. Dans la boîte de dialogue Création de table, tapez un nom pour la nouvelle table.

  8. Vous pouvez aussi spécifier une autre base de données dans laquelle créer la table.

  9. Cliquez sur OK.

  10. Sous l’onglet Créer, dans le groupe Résultats, cliquez sur Exécuter.

Utiliser une requête Union afin d’effectuer une jointure externe complète

Vous pouvez utiliser une requête Union pour effectuer une jointure externe complète. Une jointure externe complète ne limite pas les lignes renvoyées par l’une ou l’autre des tables jointes, mais les combine en fonction des valeurs du champ de jointure.

  1. Créez une requête comportant une jointure externe gauche sur le champ à utiliser pour une jointure externe complète.

  2. Sous l’onglet Accueil, dans le groupe Affichages, cliquez sur Affichage, puis sur Mode SQL.

  3. Appuyez sur Ctrl+C pour copier le code SQL.

  4. Supprimez le point-virgule à la fin de la clause FROM, puis appuyez sur Entrée.

  5. Tapez UNION, puis appuyez sur ENTRÉE.

    Remarque : N’utilisez pas le mot-clé ALL si vous utilisez une requête Union pour effectuer une jointure externe complète.

  6. Appuyez sur Ctrl+V pour coller le code SQL copié à l’étape 3.

  7. Dans le code collé, modifiez LEFT JOIN en RIGHT JOIN.

  8. Supprimez le point-virgule à la fin de la seconde clause FROM, puis appuyez sur Entrée.

  9. Ajoutez une clause WHERE indiquant que la valeur du champ de jointure est NULL dans la première table répertoriée dans la clause FROM (la table de gauche).

    Par exemple, si la clause FROM est :

    FROM Products RIGHT JOIN [Order Details] 
    ON Products.ID = [Order Details].[Product ID]

    Vous devriez ajouter la clause WHERE suivante :

    WHERE Products.ID IS NULL

  10. Tapez un point-virgule (;) à la fin de la clause WHERE pour indiquer la fin de la requête Union.

  11. Sous l’onglet Créer, dans le groupe Résultats, cliquez sur Exécuter.
    Les résultats de votre requête Union apparaissent en mode Feuille de données.

Pour plus d’informations, voir joindre des tables et requêtes.

Haut de la Page

Conditions et syntaxe SQL d’une requête Union

Quelques conditions d’une requête Union

  • Les requêtes Sélection que vous combinez en une requête Union doivent posséder le même nombre de champs de destination, dans le même ordre et avec des types de données identiques ou compatibles. Lorsque vous exécutez une requête Union, les données de chaque jeu de champs correspondants sont combinées dans un champ de destination, de sorte que le résultat de la requête dispose du même nombre de champs que chacune des instructions SELECT.

    Remarque : Pour les besoins d’une requête Union, les types de données numérique et texte sont compatibles.

  • Une requête Union est une requête SQL, elle doit par conséquent être écrite directement en langage SQL. Vous devez basculer en Mode SQL pour écrire des requêtes SQL, notamment les requêtes Union.

Syntaxe SQL d’une requête Union

Dans une requête Union, chaque requête Sélection (également appelée instruction SELECT) comporte les clauses suivantes :

Clause

Contient une liste de...

SELECT

champs contenant les données à récupérer.

FROM

tables contenant ces champs.

WHERE (facultatif)

critères pour ces champs.

Les instructions SELECT sont combinées à l’aide du mot-clé UNION.

La syntaxe SQL de base pour une requête Union est la suivante :

SELECT field_1[, field_2,…]
FROM table_1[, table_2,…]
UNION [ALL]
SELECT field_a[, field_b,...]
FROM table_a[, table_b,…];

Par exemple, si vous disposez d’une table nommée Produits et d’une autre nommée Services et que les deux tables possèdent des champs qui contiennent le nom du produit ou du service, le prix, la disponibilité d’un engagement ou d’une garantie, et indiquent si vous offrez le produit ou le service de manière exclusive. Bien que la table Produits stocke des informations d’engagement et que la table Services stocke des informations de garantie, les informations de base sont identiques (si un produit ou un service particulier propose un engagement sur la qualité). Vous pouvez utiliser une requête Union, telle que celle qui suit, pour combiner les quatre champs des deux tables :

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

Examinons l’exemple de syntaxe précédent ligne par ligne :

Syntaxe

Explication

Informations supplémentaires

SELECT nom, prix, disponibilité_engagement, offre_exclusive

Première clause SELECT

Le mot-clé SELECT est suivi d’une liste d’identificateurs indiquant les champs à partir desquels récupérer les données.

Une clause SELECT doit répertorier au moins un champ.

Cette clause SELECT répertorie les identificateurs des champs nom, prix, disponibilité_engagement et offre_exclusive.

FROM Produits

Première clause FROM

Une clause FROM se trouve après une clause SELECT. Elles forment ensemble une instruction SELECT de base.

Le mot-clé FROM est suivi d’une liste d’identificateurs indiquant quelles tables contiennent les champs répertoriés dans la clause SELECT.

Une clause FROM doit répertorier au moins une table.

Cette clause FROM répertorie l’identificateur de la table Produits.

UNION ALL

Le mot-clé UNION et le mot-clé facultatif ALL

UNION indique que les résultats de l’instruction SELECT précédant UNION sont combinés avec les résultats de l’instruction SELECT se trouvant après UNION.

Quand vous utilisez le mot-clé ALL, les lignes en double ne sont pas supprimées des résultats de la requête Union.

En utilisant le mot-clé ALL, la requête peut s’exécuter plus vite, car Access n’a pas besoin de vérifier les lignes en double.

Utilisez le mot-clé ALL si l’une des conditions suivantes est vraie :

  • Vous êtes sûr que les requêtes Sélection n’engendreront pas de lignes en double.

  • Le fait que vos résultats comportent des lignes en double n’a pas d’importance.

  • Vous voulez voir les lignes en double.

SELECT nom, prix, disponibilité_garantie, offre_exclusive

Deuxième clause SELECT

Quelques règles :

  • La deuxième clause SELECT doit comporter le même nombre de champs que la première clause SELECT.

  • Les champs qui partagent des données communes doivent apparaître dans le même ordre dans la clause.

  • Les champs qui partagent des données communes doivent avoir des types de données identiques ou compatibles.

Remarque : Le nom des champs dans le résultat d’une requête Union proviennent de la première clause SELECT. Ainsi, dans l’exemple, les données des champs « disponibilité_engagement » et « disponibilité_garantie » sont nommées « disponibilité_engagement » dans le résultat de la requête.

FROM Services

Deuxième clause FROM

Il n’existe aucune restriction sur les tables dans les clauses FROM d’une requête Union. Vous pouvez créer une requête Union qui utilise les mêmes tables dans chaque clause FROM. Vous pouvez avoir des nombres de tables différents dans les clauses FROM. Dans notre exemple, les clauses FROM comportent chacune une seule table.

Haut de la Page

Remarque : Avertissement traduction automatique : cet article a été traduit par un ordinateur, sans intervention humaine. Microsoft propose cette traduction automatique pour offrir aux personnes ne maîtrisant pas l’anglais l’accès au contenu relatif aux produits, services et technologies Microsoft. Comme cet article a été traduit automatiquement, il risque de contenir des erreurs de grammaire, de syntaxe ou de terminologie.

Développez vos compétences
Découvrez des formations
Accédez aux nouvelles fonctionnalités en avant-première
Rejoignez le programme Office Insider

Ces informations vous ont-elles été utiles ?

Nous vous remercions pour vos commentaires.

Merci pour vos commentaires. Il serait vraisemblablement utile pour vous de contacter l’un de nos agents du support Office.

×