Accessのテーブル結合方法

このQ&Aのポイント
  • Access2000で商品の仕入と売上の受払を一覧表にする方法について説明します。
  • 仕入と売上のテーブルを結合し、商品コード別に在庫の動きや仕入・売上の詳細を表示する方法について解説します。
  • ユニオンクエリや選択クエリを使用して一枚の表に仕入と売上を統合する方法について説明します。
回答を見る
  • ベストアンサー

Accessのテーブル結合方法

Access2000で商品の仕入と売上の受払を一覧表にしようとしているのですがうまくいきません。 テーブルは商品仕入と、売上の2つがあって 仕入には荷受した日、商品コード、数量、仕入金額と値入金額、仕入先があります。 売上には売上した日、商品コード、レジ番号、利用者、数量、売上金額となっています。 この2つを1枚の表にして、商品コード別に在庫が動いた日、適用(売上ならレジ番号、利用者を表記して、仕入なら仕入先を明記)、仕入数量、仕入金額、値入金額、売上数量、売上金額となるようにしたいのですが、うまくいきません。 ユニオンクエリを使ったり、選択クエリで単純にならべたりしたのですが、私の知識ではどうにもならなくなりました。 よろしくご指導のほどお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

まず、商品仕入と売上の2つのテーブルを単純にまとめたユニオンクエリーを作成します。ここでそれぞれのテーブルで対応する項目が無い場合は0にしておきます。 また、適用に対応する項目は、都合上2つに分け、それぞれ対応しない方はNULLを入れておきます。 select 荷受した日 as 在庫が動いた日, 商品コード, 仕入先 as 適用1, NULL as 適用2, 数量 as 仕入数量, 仕入金額, 値入金額, 0 as 売上数量, 0 as 売上金額 from 商品仕入 uinon all select 売上した日, 商品コード, NULL, レジ番号 & ' ' & 利用者, 0, 0, 0, 数量, 売上金額 from 売上; あとは、このユニオンクエリーから集計クエリーを作成します。 在庫が動いた日と商品コードは集計項目に、適用1と適用2は最大値、残りの項目は合計を選べば目的の結果に近いものが出ると思います。 あとは、適用1と適用2をどうにかすればいいかと。

YUK2001
質問者

お礼

助かりました。ユニオンクエリで項目がない場合は0をいれるんですね。勉強になります。 今後ともよろしくご鞭撻のほどお願いいたします。

関連するQ&A

  • エクセル2003 こんなことってできますか?

     商品別で仕入日順に・仕入先・仕入数量・仕入単価を記入する表を作りました。  この表のデータを基に仕入先別の表を作りたいと思っています。  商品別の表は、A列のセルを5個ずつ連結し商品名を記入し、B列以降は仕入日・仕入先・仕入数量・仕入単価・仕入合計額を記入していくように作りました。  A1~A5を連結 商品名を記入 (A6以降も5個ずつ連結)  B列以降   1行目 日付   (直接入力)   2行目 仕入先名 (直接入力)   3行目 仕入数量 (直接入力)   4行目 仕入単価 (直接入力)   5行目 仕入合計額(=B3*B4)  上記の表に対して、仕入先別(A商店・B商店・・・)の表をそれぞれ作り、商品別の表の仕入先名に入力されたときに該当する仕入先別の表へ商品名や日付金額が自動でコピーされるようにしたいのです。 仕入先別の表は形も決めてないのですが、商品別のほうはすでに完成しています。 このような状況で使える関数とかその他の方法ってあるのでしょうか? もし、できない場合はここを変えればできるかもみたいな助言でも結構です。 よろしくお願いします。

  • Accessで複数テーブルのJoin

    次のようなテーブル(T1~T4)とクエリ(Q1~Q2)があります。 クエリの表で囲っているものはAccessのQBEを表しています。 その下はAccessが自動生成したSQLです。 Accessがある場合はいいのですが、ない場合、いきなりSQLを 書かないといけないわけですが、どのような順番に並べていって いいのか整理がつきません。 4つ以上になるとさっぱりです。 何かヒントをいただけませんでしょうか? T1:売上表[売上No、日付、顧客CD] T2:顧客表[顧客CD、顧客名] T3:売上明細[ID、売上No、連番、商品CD、数量] T4:商品表[商品CD、商品名、単価] Q1: ┌────────────────┐ │日付 │ 商品名│単価 │数量 │ ├────────────────│ │売上表│商品表│商品表│売上明細│ └────────────────┘ SELECT 売上表.日付, 商品表.商品名, 商品表.単価, 売上明細.数量 FROM 商品表 INNER JOIN (売上表 INNER JOIN 売上明細 ON 売上表.売上No = 売上明細.売上No) ON 商品表.商品CD = 売上明細.商品CD; Q2: ┌────────────────────┐ │日付 │ 顧客名│商品名│単価 │数量 │ ├────────────────────│ │売上表│顧客表│商品表│商品表│売上明細│ └────────────────────┘ SELECT 売上表.日付, 顧客表.顧客名, 商品表.商品名, 商品表.単価, 売上明細.数量 FROM (商品表 INNER JOIN (売上表 INNER JOIN 売上明細 ON 売上表.売上No = 売上明細.売上No) ON 商品表.商品CD = 売上明細.商品CD) INNER JOIN 顧客表 ON 売上表.顧客CD = 顧客表.顧客CD;

  • Accessでのクエリー作成

     テーブル 納品先コード・納品先名・商品名・数量・仕入れ先コード・仕入れ先名  となっているのを、 クエリー上で 納品先コード・納品先名・(仕入れ先別納品)数量合計・仕入れ先コード・仕入れ先名  としたいのですが、どうしたらいいでしょうか?

  • Access2000のクエリで、計算をするとき。

    クエリで計算式を作りました。 「仕入れ数量」-「売上数量」 みたいなカンタンなものです。 式自体に問題はなく、答えも出ているのですが、1つ分からないことがあります。 仕入数量  売上数量  差引き(←計算式)   50     20     30   40   55     10     45   30   25 というように、売上数量がある時(引く値がある時)は、答えが出ますが、売上数量がない時(引く値がない時)は、答えがでません。空白のままです。 式は 差引き:[仕入数量]-[売上数量] なので、売上数量がない時は、買取数量がそのまま表示されるようにしたいのです。 ↓このように・・・ 仕入数量  売上数量  差引き(←計算式)   50     20     30   40            40   55     10     45   30            30   25            20 で、売上数量に「0」を入れればいいのかもしれませんが、この数字は、それぞれのレコードの情報が蓄積されてできた数字なので、どうすればいいかわかりません。。。 お手数おかけしますが、早急に返答&アドバイス願います。

  • アクセスのクエリの作り方

    初心者なので教えてくださいませんか? アクセスでテーブルを複数作成して、それをクエリで結合するときに、どのテーブルからどのフィールドを選べばいいのかわかりません。 例えば・・・ 売上テーブル:NO 売上日 商品コード 数量 商品テーブル:商品コード 商品名 単価 この二つのテーブルを結合するクエリを作ります。 NO 売上日 商品コード 商品名 単価 数量 上記のフィールドを使用したいのですが、このとき、商品コードをどちらのテーブルのを使ったらよいのでしょう。 その判断は何からしたらよいのでしょうか。 うまく説明できているかわかりませんが、よろしくお願いします。

  • access2003

    2000種ほどの商品を扱っています。商品コードひとつにつき、仕入先・取引先が1箇所ずつ決まっていて、値段の変化もあまりありません。伝票を見ながら、フォームから直接売上入力を行い、請求処理と売上分析に利用したく思います。 ◆親)売上入力フォーム:売上管理番号/日付/取引先/取引先伝票番号/売上合計金額 ◆子)売上明細フォーム:商品コード/商品名/単価/数量/明細金額 ◆売上入力テーブル:売上管理番号/取引先/日付/取引先伝票番号 ◆売上明細テーブル:明細番号/売上管理番号/商品コード/数量/明細単価 入力の効率化を図るため、1部品1取引先であることを利用して、親フォームで取引先を選択することで商品を絞り込み、子フォームの商品選択コンボボックスにはその取引先の商品だけが表示させるようにしたいと思います。どのような方法が考えれるでしょうか? クエリを使うのだと思いますが、いろいろ試しても失敗してしまいます。 また、その上でさらなる絞込みとして、明細の各行で各商品を選択する際に、商品コードの一部を入れたり、仕入先名を入れると部品が絞り込めるようにできないでしょうか? アドバイス、参考資料、なんでもお寄せください! どうぞよろしくお願いいたします。

  • ピボットテーブル 値を縦並びにするには?

    こんばんは。 よろしくお願いします。 シート「売上」の売上表をもとに、ピボットテーブルを新規ワークシートに作成しています。 ●行ラベル:商品名 ●列ラベル:売上日(月ごとにグループ化) ●  値   :売上金額、売上数量 上記の場合、5行目B列以降に「売上額」「売上数量」「売上額」… とフィールド名が列方向(横並び)に配置されているレイアウトになります。 そこで質問です。 この「売上額」と「売上数量」が縦並びに表示されるようにしたいのですが、どうすればいいのでしょうか? 色々試しているのですがうまくいきません。 詳しい方よろしくお願いします。 Vista Excel2007です。

  • Accessにてテーブルが異なるデータの引き算

    Access に異なるテーブルに収められているデータの「引き算」ほ方法をお教えください。 只今作成しているシステムは、簡単な在庫管理システムです。 今後、拡張していくこともあり得るという前提で各テーブルを作成しました。 作成したテーブルは以下のとおりです。 仕入先テーブル「仕入先ID・仕入先名・フリガナ・〒・住所1・住所2・TEL・FAX」 材料テーブル「材料ID・材料名」(単価はその時々で変わってくるのであえてここでは設定していません) 仕入テーブル「仕入ID・日付・仕入先ID・材料ID・仕入数量・単価」 払出テーブル「払出ID・日付・材料ID・払出数量」 在庫確認クエリにて以下の設定を行いました。 材料テーブルより「材料ID・材料名」 仕入テーブルより「仕入数量」 払出テーブルより「払出数量」 を設定し演算にて「在庫: Sum(Nz([仕入数量],0)-Nz([払出数量],0))」を入力しました。 データシートビューにて確認したところ、お互い発生した回数分だけ足されてしまい正確な在庫数量が表示されません。 例 ==================== 9/1 仕入数量 100 9/2 払出数量 50 9/3 仕入数量 100 9/4 払出数量 50 9/5 仕入数量 100 ==================== とした場合に、仕入数量600 払出数量300 となってしまいます。 以下は「SQLレビュー」の内容です。 SELECT 材料.材料ID, 材料.材料名, Sum(仕入.仕入数量) AS 仕入数量の合計, Sum(払出.払出数量) AS 払出数量の合計, Sum(Nz([仕入数量],0)-Nz([払出数量],0)) AS 在庫 FROM (材料 INNER JOIN 仕入 ON 材料.材料ID = 仕入.材料ID) INNER JOIN 払出 ON 材料.材料ID = 払出.材料ID GROUP BY 材料.材料ID, 材料.材料名; 解決方法をご享受くださいますようよろしくお願いいたします。

  • アクセス2003 各売上日の直近仕入額を知るには?

    いつもお世話になっています。 クエリを使って次のようなことがしたいのですが可能でしょうか? 下記のような2つのテーブルがあるとします。 <仕入記録> [仕入ID]  [仕入年月日]   [商品名]   [数量]   [単価]   1     2007/04/01     AAA    1    1,000   2     2007/04/03     BBB    1    2,000   3     2007/05/06     AAA    1    1,200   4     2007/05/15     CCC    1     800   5     2007/06/08     BBB    1    2,200   6     2007/06/20     CCC    1     900 <売上記録> [売上ID]   [売上年月日]   [商品名]   [数量]   1      2007/04/25    AAA      1   2      2007/05/08    AAA      1   3      2007/05/08    BBB      1   4      2007/06/10    AAA      1   5      2007/06/10    BBB      1   6      2007/06/10    CCC      1 この時2つのテーブルを使って販売した商品の原価(仕入単価)を求めるクエリを作りたいのですがどのようにしたらよいのでしょうか? 仕入単価は、各商品の売上年月日以前かつ最も売上年月日に近い仕入れ時の単価にしたいと考えています。 上記の場合、希望するクエリの結果は下記のような感じです。 [売上ID]   [売上年月日]   [商品名]   [仕入単価]   1      2007/04/25    AAA      1,000   2      2007/05/08    AAA      1,200   3      2007/05/08    BBB      2,000   4      2007/06/10    AAA      1,200   5      2007/06/10    BBB      2,200   6      2007/06/10    CCC       800 ご指導よろしくお願いします。

  • ACCESS テーブルのRENAME

    お力お貸し下さい!! Aテーブル(作成日5/5)商品コード・作成日・数量 Bテーブル(作成日5/6)〃 Cテーブル(作成日5/7)〃 と、3つのテーブルがあります。 クエリで商品テーブルと3つのテーブルを結び、日々の数量の変化を表にしたいと思っています。 DoCmd.Renameを使い、 BテーブルをAテーブルへ CテーブルをBテーブルへ 最新の情報をCテーブル(テーブル作成クエリ)とし、 商品と結んだクエリをデザインで開いたら、 Aテーブルが2つ(一つはリンクなし) Bテーブルが2つ(〃)と、開けないものになってしまいました。 (FROM句で~Aテーブルを繰り返すことは出来ません)とエラー。 きっと、テーブル名を変えた段階で、クエリに反映してくれている?せいだと思いますが(手動でやってもそうなので) なにか良い方法は無いでしょうか? アイデアが浮かばず、また技術が伴わず困っています。。

専門家に質問してみよう