Объединение 3 таблиц / запросов с использованием MS Access Union Query - PullRequest
1 голос
/ 07 января 2011

Я создал базу данных MySQL для хранения платежей по счетам. У каждого в моем офисе есть MS Access, поэтому я создаю интерфейсный инструмент для создания отчетов по базам данных, используя MS Access и ссылки на таблицы MySQL на бэкенде.

Я создал несколько запросов Access, которые ссылаются на таблицы MySQL, провел некоторые манипуляции и теперь хочу объединить три запроса (с одинаковой структурой таблицы) в один, на котором я могу построить свой отчет.

Благодаря моим исследованиям ( article1 , article2 и др.) Я обнаружил, что запрос Union - это то, что мне нужно. Я могу просто объединить 2 таблицы, но когда я пытаюсь объединить 3 таблицы, запрос не выполняется. Я проверил запрос Union на каждую комбинацию индивидуально (1-2, 1-3, 2-3) и любую пару работ. Я пытаюсь понять, что я могу делать неправильно, чтобы включить третий запрос в единый Союз. Можете ли вы предложить какие-либо предложения?

Таблица 1 = A Таблица 2 = B Таблица 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

;

* ОБНОВЛЕНИЕ * После экспорта каждого запроса в автономные таблицы я смог выполнить запрос UNION ALL с тремя таблицами и объединить их вместе. Таким образом, проблема явно заключается в моей попытке UNION 3 запроса, а не в 3 таблицах. Мысли?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 27 января 2018

Вам нужна точка с запятой (;), чтобы завершить запрос. Смотрите ниже:

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;
0 голосов
/ 08 января 2011

Я не могу проверить это в Access, но он работает в SQL Server. Выберите первые две таблицы с UNION в качестве производной таблицы, затем таблицу UNION C и производную таблицу.

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

Можетстоит посмотреть на схему / отношения схемы, чтобы понять, можно ли этого избежать.

...