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 :
<code class="language-sql">SELECT table1.field1 FROM table1 ORDER BY table1.field1 UNION SELECT table2.field1 FROM table2 ORDER BY table2.field1</code>
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 :
<code class="language-sql">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</code>
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!