Maîtriser les résultats triés dans les requêtes MS Access UNION
La combinaison de données de plusieurs tables à l'aide d'une requête UNION
dans MS Access présente souvent des défis lors de la tentative de tri du résultat final. Une approche naïve comme celle-ci :
SELECT table1.field1 FROM table1 ORDER BY table1.field1 UNION SELECT table2.field1 FROM table2 ORDER BY table2.field1
ne produira pas le résultat trié souhaité dans le moteur de base de données MS Access Jet.
La solution réside dans le placement stratégique de la clause ORDER BY
. Au lieu de l’appliquer à l’ensemble de la requête UNION
, appliquez-la à chaque instruction SELECT
individuelle au sein de l’union. Ceci est réalisé en créant des sous-requêtes :
SELECT * FROM ( SELECT table1.field1 FROM table1 ORDER BY table1.field1 ) AS DUMMY_ALIAS1 UNION ALL SELECT * FROM ( SELECT table2.field1 FROM table2 ORDER BY table2.field1 ) AS DUMMY_ALIAS2
Cette requête révisée utilise deux sous-requêtes, chacune avec sa propre clause ORDER BY
, garantissant que chaque ensemble de données est trié indépendamment avant d'être combiné avec UNION ALL
. Les clauses AS DUMMY_ALIAS1
et AS DUMMY_ALIAS2
fournissent des alias pour les sous-requêtes, qui sont nécessaires au bon fonctionnement de cette approche dans MS Access. L'union résultante présente ensuite les données fusionnées et triées. Notez l'utilisation de UNION ALL
, qui inclut toutes les lignes, contrairement à UNION
qui supprime les doublons.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!