重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

いつもお世話になっております。
Access2016で2つのテーブルを合わせて1つの表にする方法を探しています。
具体的には下記のとおりです。

テーブル名:T入庫
フィールド:日付(日付/時刻型)
      入庫数(数値型)

例えば、    日付   入庫数
       2018/9/1   1
       2018/9/2   3
       2018/9/4   5


テーブル名:T出庫
フィールド:日付(日付/時刻型)
      出庫数(数値型)

例えば、    日付        出庫数   
       2018/9/3        2
       2018/9/5        1


この情報を次のように表にできないかと考えています。

        日付   入庫数  出庫数
       2018/9/1   1
       2018/9/2   3
       2018/9/3        2
       2018/9/4   5
       2018/9/5        1

私なりに調べた結果、ユニオンクエリが使えないかと思いましたが、
データ数が違うとダメなようであきらめました。
次の模索を始めましたが、どんなVBAなどを勉強していけばよいかも分からず、助けてください。
こんな方法やVBAを使えばできそう…でも構いませんので、
何卒ご教示のほどよろしくお願い申し上げます。

A 回答 (3件)

No.1です。



No.2さんの方法ですと、出庫と入庫が同じカラムに入ってしまうのではないかと思います。
No.1の方法を具体的に、SQLで示します。

日付ユニオンクエリ
SELECT T出庫.日付 FROM T出庫 UNION ALL SELECT T入庫.日付 FROM T入庫;

日付単一化
SELECT DISTINCT 日付ユニオンクエリ.日付 FROM 日付ユニオンクエリ;

目的データの作成
SELECT 日付単一化.日付, T入庫.入庫数, T出庫.出庫数
FROM (日付単一化 LEFT JOIN T出庫 ON 日付単一化.日付 = T出庫.日付) LEFT JOIN T入庫 ON 日付単一化.日付 = T入庫.日付
ORDER BY 日付単一化.日付;

以上三つのクエリを作成し、最後の「目的データの作成」のクエリを実行します。
作成したい年月等を指定することも可能です。
    • good
    • 0
この回答へのお礼

psgradeさん、お礼が大変遅れ申し訳ございません。
停電などなどでやっと日常に戻ってきました。
教えていただいた通りでやりたかったことができました。
ありがとうございます。
教えていただいた内容を理解して応用できるように勉強します。
今後ともよろしくお願い申し上げます。

お礼日時:2018/10/09 15:05

こんばんは


下記、SQLをクエリーデザイン→SQLで貼りつけてみてください

SELECT T入庫.日付, T入庫.入庫数, '' AS 出庫数
FROM T入庫
union
SELECT T出庫.日付, '' as 入庫数, T出庫.出庫数
FROM T出庫;

ユニオンクエリーは、出力列数を揃える必要がありますので、
足りない場合は、足せば良いです
    • good
    • 0
この回答へのお礼

pi-3.14さん、お礼が大変遅れ申し訳ございません。
列数が違うからユニオンクエリは使えんとすぐに諦めていました。
なければ足せばいいですね。ありがとうございました。
今後ともよろしくお願い申し上げます。

お礼日時:2018/10/09 15:07

1.T入庫とT出庫の日付フィールドだけを使って、ユニオンクエリとし単一化する。


2.1のユニオンクエリとT入庫、T出庫テーブルとをLeft Joinで日付フィールドと結合させたクエリを作成する。
  ユニオンクエリの全データとそれに一致する日付を持つ入庫、出庫データを結合させる。
3.日付はユニオンクエリから、入庫数、出庫数はそれぞれのテーブルから持ってくる。
4.日付フィールドを昇順に並べ替えるように設定する。

以上のように、日付ユニオンクエリと元の2テーブルを組み合わせたクエリを作れば実現できると思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!