MS Access Unionクエリを使用して3つのテーブル/クエリをマージする
質問
請求書の支払いを保存するためにMySQLデータベースを構築しました。私のオフィスの全員がMSアクセスを持っているので、MS Accessを使用してフロントエンドデータベースレポートツールを構築し、バックエンドのMySQLテーブルにリンクしています。
MySQLテーブルを参照し、いくつかの操作を行ったアクセスクエリをいくつか作成しましたが、今度はレポートを作成できる3つのクエリ(同じテーブル構造)をマージしたいと考えています。
私の研究を通して(第1条, 第2条, 、およびその他)、私はユニオンクエリが私が必要とするものであることを発見しました。 2つのテーブルを正常に結びつけることができますが、3番目を結合しようとすると、クエリは実行できません。各組み合わせのユニオンクエリを個別にテストしました(1-2、1-3、2-3)、およびすべてのペアが機能します。私は、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
;
* アップデート *各クエリをスタンドアロンテーブルにエクスポートした後、3テーブルユニオンのすべてのクエリを実行してマージすることができました。そのため、問題は、3つのテーブルではなく、3つのクエリを組み合わせようとする私の試みに明らかにあります。考え?
ありがとう!
解決
これをアクセスでテストすることはできませんが、SQL Serverで動作し、ユニオンを派生テーブルとして選択し、ユニオンテーブルCと派生テーブルを使用して最初の2つのテーブルを選択します。
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
スキーマの設計 /関係を見て、これを回避できるかどうかを確認する価値があるかもしれません。
他のヒント
クエリを終了するには、セミコロン(;)が必要です。下記参照:
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;