dポイントプレゼントキャンペーン実施中!

いつもお世話になっています。Access2016を使用しています。
「教えて!goo」で教えていただき、テーブル2つを1つにすることができました。
その節はありがとうございました。

教えていただいたものにフィールドを追加し、サブフォームとして使用しようとしたところ、下記のようなエラーがでました。

「指定されたフィールド’フィールド名’がSQLステートメントのFROM句にある複数のテーブルを参照しました。」

具体的には、下記の通りです。

テーブル名:T入庫
フィールド:ID(主キー)、日付、部品№、入庫数

テーブル名:T出庫
フィールド:ID(主キー)、日付、部品№、出庫数

上記のテーブルを下記SQLで1つの表にします。

SELECT 日付単一化.日付, T入庫.入庫数, T出庫.出庫数
FROM (日付単一化 LEFT JOIN T出庫 ON 日付単一化.日付 = T出庫.日付) LEFT JOIN T入庫 ON 日付単一化.日付 = T入庫.日付
ORDER BY 日付単一化.日付;

これに部品№を追加したかったため、下記のようにしました。

SELECT 日付単一化.日付, T入庫.部品№, T入庫.入庫数, T出庫.部品№, T出庫.出庫数
FROM (日付単一化 LEFT JOIN T出庫 ON 日付単一化.日付 = T出庫.日付) LEFT JOIN T入庫 ON 日付単一化.日付 = T入庫.日付
ORDER BY 日付単一化.日付;

これで期待通りのデータが取れるようになりましたが、ここから作ったフォームを部品マスタ(フィールド名「部品№」が主キー、他フィールドとして「部品名」や「型番」を設定)のフォームにサブフォームとして挿入したところ、

「指定されたフィールド’T出庫.部品№’がSQLステートメントのFROM句にある複数のテーブルを参照しました。」

とエラーになってしまい、サブフォームは白紙の状態で表示がされます。
教えていただいたSQL文に追加した方法が間違っているのでしょうか。
エラーにならない方法をご教示のほどよろしくお願い申し上げます。

A 回答 (3件)

難しく考えすぎです。


クエリを幾つも作る必要はありません。
もっとシンプルに!!

SELECT Q.日付, Q.部品№, SUM(Q.入庫数) AS 入庫数, SUM(Q.出庫数) AS 出庫数
FROM(SELECT T入庫.日付, T入庫.部品№, T入庫.入庫数, Null AS 出庫数 FROM T入庫
UNION ALL
SELECT T出庫.日付, T出庫.部品№, NULL AS 入庫数, T出庫.出庫数 FROM T出庫) AS Q
GROUP BY Q.日付, Q.部品№;
    • good
    • 1
この回答へのお礼

よろずやkinchanさん、ありがとうございます。
お礼が遅くなり申し訳ございません。
目的としていた形でサブフォームを挿入することができました。
ありがとうございました。

お礼日時:2018/10/18 17:27

No.2 さんの場合、同一日に入庫部品№が2種類、出庫部品№も2種類あった場合どういう表示になるかお試し下さい。

    • good
    • 0

前の質問を頂いた時、考えたのは、例にはありませんでしたが、同日に出庫と入庫があった場合です。


同日の入出庫は、同じ行に表示された方が良いと思い、先ず、日付の単一化から行いました。
今回ご質問の件は、同じ「部品№」という名前のフィールドが両方のテーブルにある為に起こっています。
従って、入庫部品№、出庫部品№のように名前を変えれば解決すると思います。
この場合、それぞれの部品№欄は、別の列に表示されることになります。
No.1さんの場合、部品№は出庫も入庫も同じ列に表示されますが、同じ日付の場合、別々の行に表示されます。
どちらが見やすいかで判断頂ければと思います。
    • good
    • 0
この回答へのお礼

psgradeさん、いつもいつもありがとうございます。
前回教えていただいたときは、その時の目的を達成して喜んでいたのですが、欲が出てしまって部品№別にサブフォームの形にしたいと思うようになりました。部品№別のほうが今回の目的にあっていたため、よろずやkinchanさんをベストアンサーにさせていただきました。
いつも回答いただき、大変感謝しています。
今後ともよろしくお願い申し上げます。

お礼日時:2018/10/18 17:31

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A