Question

Je l'ai construit une base de données MySQL pour le paiement des factures du magasin. Tout le monde dans mon bureau a MS Access, donc je suis la construction d'un outil de reporting de base de données de fin d'avant en utilisant MS Access et un lien vers les tables de MySQL sur backend.

J'ai créé des requêtes d'accès qui font référence aux tables de MySQL, fait une manipulation, et que vous voulez maintenant fusionner trois requêtes (avec la même structure de table) de nouveau dans celui que je peux construire mon rapport sur.

Grâce à mes recherches ( article1 , article2 , et d'autres), j'ai trouvé qu'une requête Union est ce que je dois. Je peux l'union 2 tables très bien, mais lorsque je tente d'union le 3, la requête ne parvient pas à exécuter. Je l'ai testé la requête Union sur chaque combinaison individuellement, (1-2, 1-3, 2-3) et les travaux de paire. Je suis en train de comprendre ce que je pourrais faire mal afin d'intégrer la 3ème requête en une seule Union. Pouvez-vous proposer des suggestions?

Tableau 1 = A Tableau 2 = B Tableau 3 = C

SELECT A.Year, A.BillingQuarter, A.Name, A.ObjectCode, A.Amount
FROM A

UNION  ALL SELECT B.Year, B.BillingQuarter, B.Name, B.ObjectCode, B.Amount
FROM B

UNION ALL SELECT C.Year, C.BillingQuarter, C.Name, C.ObjectCode, C.Amount
FROM C

* MISE À JOUR * Après avoir exporté chaque requête aux tables autonomes, je suis en mesure d'exécuter une 3 table requête UNION ALL et les fusionner ensemble. Le problème réside clairement dans ma tentative de UNION 3 requêtes, pas dans 3 tableaux. Pensées?

Merci!

Était-ce utile?

La solution

Je ne peux pas tester cela dans Access mais il fonctionne dans SQL Server, sélectionnez les deux premières tables avec un syndicat comme une table, puis table dérivée UNION C et la table dérivée.

SELECT Year, BillingQuarter, Name, ObjectCode, Amount FROM
    (SELECT Year, BillingQuarter, Name, ObjectCode, Amount FROM @A
    UNION ALL
    SELECT Year, BillingQuarter, Name, ObjectCode, Amount FROM B)
    AS Derived
    UNION ALL
    SELECT Year, BillingQuarter, Name, ObjectCode, Amount FROM C

Il peut être intéressant de regarder la conception de schéma / relations pour voir si cela peut être évité.

Autres conseils

Vous avez besoin d'un point-virgule (;) pour mettre fin à la requête. Voir ci-dessous:

SELECT Year, BillingQuarter, Name, ObjectCode, Amount FROM
    (SELECT Year, BillingQuarter, Name, ObjectCode, Amount FROM @A
    UNION ALL
    SELECT Year, BillingQuarter, Name, ObjectCode, Amount FROM B)
    AS Derived
    UNION ALL
    SELECT Year, BillingQuarter, Name, ObjectCode, Amount FROM C;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top