連結クエリで出品リストを表示する方法とは?

このQ&Aのポイント
  • ネットショップの在庫管理や注文後の発送情報をACCESSで管理していますが、出品リストを視覚的にわかりやすく表示したいと考えています。
  • 現在のテーブル構成では視認性が悪く、同じ基本情報IDが重複して並んでしまうなどの問題があります。
  • 出品先毎にテーブルを分けずに連結クエリを使用して出品リストを表示する方法を教えてください。
回答を見る
  • ベストアンサー

ACCESS クエリの連結?

質問タイトルが「クエリの連結」としましたがこのタイトルが適正ではないかもしれませんがよろしくお願いします。 現在ネットショップの在庫管理や、注文後の発送情報等をACCESSで管理しております。 少しずつ販売数も増え、販売先のプラットフォームも自社ECサイトだけでなく複数のショッピングモールで販売をするようになり、当初作ったACCESSでの管理システムでは構造的に無理が出てきたため新しいシステムを構築しているところです。 テーブル構成やフィールド構成など複雑ですので、今回の質問に必要かなと思われる部分を抜き出して質問させていただきます。また、説明がうまくできず伝わりにくい部分がありましたらご指摘ください。 ◆t出品基本情報 ・出品基本情報ID ・ベース商材名(Tシャツ、キャップなど) ・ ◆t出品 ・出品ID ・出品基本情報(t出品基本情報→t出品) ・出品先ID(出品先MSTからルックアップ) ・出品タイトル ・出品状態(出品状態MSTからルックアップ、出品中、出品可など) ・出品価格 ・ ◆t出品詳細 ・出品詳細ID ・出品ID(t出品→t出品詳細) ・商材ID(t商材MSTルックアップ) ・構成数量(複数商品のセット販売などに対応するため、鉛筆10本など) ・仕入価格 ・ というような構成です。 イメージとしては以下のような関係です。 例えば同じ鉛筆(t出品基本情報)でも出品先Aは10本セット、出品先Bは15本セット等に対応する多面にこのような感じのテーブル構成になってしまいました。もちろん販売手数料などの違いなどから出品価格もt出品ごとに違います。 ◆t出品基本情報 ┣◆t出品(出品先A) ┃┗◆t出品詳細 ┣◆t出品(出品先B) ┃┗◆t出品詳細 ┣◆t出品(出品先C) ┃┗◆t出品詳細 今回質問させていただくのはここからで、現在販売中のリスト等をフォーム等に表示する場合ですが、何も考えずに普通に上記の構成をリストすると |出品基本情報ID|出品ID|出品先|出品名|出品価格|構成数量|出品状態| |1|1|出品先A|鉛筆10本セット|450円|10|出品中| |1|2|出品先B|鉛筆5本セット|200円|5|出品中| |2|3|出品先A|消しゴム1個|100円|1|出品中| |2|4|出品先B|消しゴム2個|200円|2|出品中| |2|5|出品先C|消しゴム10個|900円|10|在庫切れ| |3|6|出品先A|Tシャツ-レッド|1450円|1|出品中| このような表示になると思います。 しかし残り在庫との比較等視認性が悪いため以下のようなフォーム内での表示に変更したいです。 |出品基本情報ID|ベース商材名|出品先A構成数量|出品先A出品状態|出品先B構成数量|出品先B出品状態|出品先C構成数量|出品先C出品状態|残り在庫| 以下のように試してみましたがいろんなクエリのパターンを試しても最後に必ずカレントレコードがありませんと表示されてしまいます。 ◆q出品先A( 出品IDでリレーション、t出品→t出品詳細)(B,Cも同様) ・出品ID(t出品) ・出品基本ID(t出品) ・出品先(t出品)(出品先Aでフィルター) ・出品状態(t出品) ・構成数量(t出品詳細) ◆q出品リスト ・出品基本ID(t出品基本情報) ・ベース商材名(t出品基本情報) ・出品状態(AS 出品状態A店)(q出品先A) ・構成数量(AS 構成数量A店)(q出品先A) ・出品状態(AS 出品状態B店)(q出品先B) ・構成数量(AS 構成数量B店)(q出品先B) ・出品状態(AS 出品状態C店)(q出品先C) ・構成数量(AS 構成数量C店)(q出品先C) ・残り在庫(別途t入庫、t出庫テーブルをもとにクエリで計算したもの) 上記のようにサブクエリを作って連結してみたのですが、とりあえずは表示はできても、ABC店ともに同じテーブルを参照してフィルターをかけているだけなので、同じ基本情報IDが重複して並んでしまったりしたため、いろいろなところで集計で先頭にしたりすると、カレントレコードがありませんとなってしまう感じです。 このようなケースでは出品先A、B、Cとテーブルを分けずに対処する方法はございますでしょうか。 ちょっと質問、説明がうまくできていないとは思いますがよろしくお願いいたします。

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

  • ベストアンサー
回答No.3

【訂正】 【出品基本台帳】 出品先_ID・・・・・・・[出品先]主キー 品種別台帳_ID・・・・・[品種別台帳]主キー 先月期首在庫・・・・・・・先々月末在庫数 先月売上数・・・・・・・・先月売上数 先月出品数・・・・・・・・先月出品数 先月調節数・・・・・・・・先月調節数 当月期首在庫・・・・・・・先月末在庫数 当月売上数・・・・・・・・当月売上数 当月出品数・・・・・・・・当月出品数 当月調節数・・・・・・・・当月調節数 当月月現在庫・・・・・・・当月現在庫 テーブル[出品基本台帳]は、普通はこのよう。先のように複合キー+主キーというのは私の流儀。よって、チト訂正しておきます。

その他の回答 (2)

回答No.2

補足:アドバイスは無理! 1、マスターテーブル 【商品基本台帳】・・・・商品管理テーブル 【品種別台帳】・・・・・商品枝番管理テーブル 【仕入先】・・・・・・・仕入先 【出品先】・・・・・・・出品先 2、出品関連テーブル 【出品基本台帳】・・・・出品商品在庫管理テーブル 【出品伝票】・・・・・・出品情報 【返品伝票】・・・・・・返品情報 【売上伝票】・・・・・・売上情報 【管理伝票】・・・・・・在庫管理情報(廃棄等) 商品マスターは、基本情報と枝番情報の主従関係を持つテーブルで管理。その場合、単位情報、仕入単価等の管理は枝番を管理するテーブルの役目。そして、出品情報は、枝番単位で管理されなければならない。この辺りまでは、私と同じ考え。私が作成した仕組みと同じ。さて、問題は、その先。 まず、【出品基本台帳】だが、これは《現在販売中のリスト等を表示することを大前提に設計》されているはず。だから、普通は、ちゃっちゃっと表示するだけ。なのに、それが出来ないってのはどういうことなのか? 【出品基本台帳】 ID・・・・・・・・・・・台帳主キー 品種別台帳_ID・・・・・[品種別台帳]主キー 出品先_ID・・・・・・・[出品先]主キー 先月期首在庫・・・・・・・先々月末在庫数 先月売上数・・・・・・・・先月売上数 先月出品数・・・・・・・・先月出品数 先月調節数・・・・・・・・先月調節数 当月期首在庫・・・・・・・先月末在庫数 当月売上数・・・・・・・・当月売上数 当月出品数・・・・・・・・当月出品数 当月調節数・・・・・・・・当月調節数 当月月現在庫・・・・・・・当月現在庫 要は、このテーブルを表示させるだけ。なのに、それが出来ないってのはどういうことなのか?そこんところは、開発者が突き止めなきゃー。と、思うが・・・。

回答No.1

Q、対処する方法はございますでしょうか? A、あるのでは・・・ 質問文は1分ほど眺めただけでの回答ですが・・・ 解決策=クエリを元にデータを表示するのを断念する。 【追加】◆t出品基本情報の設計は見直すべきなのでは・・・ なんかEXCEL的発想を感じますね。ちょっとAccess的なテーブル設計ではないのでは・・・

neve33609
質問者

補足

ご意見ありがとうございます。 もともと、販売先が1つで運用していたシステムをもとに複数の販売先に対応させていった結果このような感じになってます。 テーブル構成も含め少し見つめなおしてみます。 >A、あるのでは・・・ >ちょっとAccess的なテーブル設計ではないのでは・・・ このあたり、少しアドバイスいただければ助かります。

関連するQ&A

  • ACCESS 選択クエリの集計について

    そもそもテーブルの作り方が悪かったと言えるのですが、是非お知恵をお借りしたく投稿しました。 売上テーブル  売上ID 日付 得意先 売上A種テーブル 売上A種ID 売上IDNo 品目 数量 単価 合計  売上B種テーブル 売上B種ID 売上IDNo 品目 数量 単価 合計  売上C種テーブル 売上C種ID 売上IDNo 品目 数量 単価 合計  売上テーブルにメインの情報を入力し、売上A種テーブル、売上B種テーブル、売上C種テーブルに詳細情報を入力できるように売上IDと売上IDNoでリレーションシップを作成しました。 選択クエリでその日の各種の売上を集計したいのですが、必ずその日の得意先の売上の中に売上A種、売上B種、売上C種が含まれているわけではないので、選択クエリで 売上ID-グループ化 日付-グループ化 得意先-グループ化 売上A種合計-合計 売上B種合計-合計 売上C種合計-合計 とした場合、A種、B種、C種すべてに入力がなければ拾ってくれません。 入力の無いもの(売上IDNoのないもの)は0で、あるものはその合計を集計させるにはどのようにしたらよいでしょうか? 何卒、よろしくお願い申し上げます。

  • 【Access】2つのクエリを1つにまとめる方法

    下記のT_Subテーブルでmain_idフィールド毎のdayフィールドの最大値のレコードを取得し、 取得したレコードの中でT_Mainのidフィールドに存在するもののみを表示したいと思い、 下記のQ_T_Sub_SelectクエリとQ_Ansクエリを作成し、 Q_Ansクエリを実行する事で意図した動作になったと思います。 その後、この2つのクエリを1つのクエリにまとめようと思ったのですが、 どのように記述すれば良いか分からなかった為、アドバイスいただける方がいらっしゃいましたら、 ご教示の程よろしくお願いします。 【Q_T_Sub_Selectクエリ】 SELECT T_Sub.* FROM T_Sub WHERE (((T_Sub.id)=(SELECT TOP 1 id FROM T_Sub Q WHERE Q.main_id = T_Sub.main_id ORDER BY day DESC, id DESC ))); 【Q_Ansクエリ】 SELECT T_Main.id, T_Main.field1, Q_T_Sub_Select.id, Q_T_Sub_Select.day, Q_T_Sub_Select.field2 FROM T_Main LEFT JOIN Q_T_Sub_Select ON T_Main.id = Q_T_Sub_Select.main_id; 【Q_Ansクエリの実行結果】 T_Main.id|field1|Q_T_Sub_Select.id|day|field2 1|A|2|     |2000 3|C|6|2011/03/10|200 【テーブル(T_Main)】 id|field1 1|A 3|C 【テーブル(T_Sub)】 id|main_id|day|field2 1|1|     |100 2|1|     |2000 3|2|2011/03/04|400 4|2|2011/03/03|500 5|3|2011/03/10|300 6|3|2011/03/10|200 なお、1つのクエリにまとめたい理由ですが、最終的にはクエリではなく、 Visual Basic上に記述を移植したいと思っているためです。 ちなみに、1つのクエリをVisual Basic上に移植して SQLの実行結果を利用するイメージは何となく分かるため、 2つのクエリを1つにまとめる方法を希望しましたが、 2つのSQL文があってもクエリなどを使用せず、 Visual Basic上への記述のみで動作する方法があれば、そのような方法でも大丈夫です。 以上、よろしくお願いします。

  • アクセス 2つのクエリーの集計について

    A: 選択クエリ|薬品コード|名称|数量|        | 001  |A  |1  | | 002  |B  |2  | | 003  |C  |3  | B: 選択クエリ|薬品コード|名称|数量|       | 001  |A  |1  | | 003  |C  |2  | | 004  |D  |3  | という2つのクエリから、 |     A   |    B |合計| |薬品コード|名称|数量|薬品コード|名称|数量| | | 001  |A  |1  | 001   |A |1  |2  |  | 002  |B  |2  | |  |  |2 |  | 003  |C  |3  | 003   |C |2  |5  |  |     |  |  | 004   |D  |3  |3  | というように、2つのクエリの結果も表示し、合計も表示 できるようなクエリの作り方を教えてください。 AとBの薬品コードを結合しても、両方の薬品コードを表示 できるような結合プロバディはないようにおもうのですが。 テーブルにしてからクエリにしないといけないのか、 そのあたりもわかりませんが教えてください。 よろしくお願いします。  質問内容書くときはうまくいっているのに、投稿だと線がずれているんですが、わかりますでしょうか?  

  • Accessのクエリーで。

    テーブルA ID テーブルB ID 年 種類 テーブルC ID 年 種類 備考 テーブルCはBの詳細をかいたようなものになっていて、希望した時だけみられるようになっています(クリックする)。 これらのテーブルをもとにクエリーを作成しました。 テーブルA-B-Cの「ID」でリレーションがされています。 B-Cの「年」もリレーションされています。 たとえば、10というIDの人がいて、2001年と2002年のデータがあったとします。 ID | 年   | 種類 | 備考 10 | 2001 | みかん | 10 | 2002 | りんご | 青森産 10 | 2002 | みかん |愛媛産 10 | 2002 | めろん | というような感じだとします。 これがそれぞれABCに入っています。 クエリーのリレーションで「種類」にリレーションを貼らないと、 10 | 2002 | りんご | 青森産 10 | 2002 | りんご | 愛媛産 10 | 2002 | りんご | 10 | 2002 | みかん | 青森産 10 | 2002 | みかん | 愛媛産 10 | 2002 | みかん | 10 | 2002 | めろん | 青森産 10 | 2002 | めろん | 愛媛産 10 | 2002 | めろん | とダブッてしまい、「種類」でリレーションをはると 10 | 2002 | りんご | 青森産 10 | 2002 | みかん | 愛媛産 と、備考に何かが入ってるものしか出なくなってしまいます。 これを回避するにはどのようにしたらいいのでしょうか? よろしくお願いします。 AC2000です。

  • アクセスクエリで特定のみをグループ化

     いつもお世話になっております。  Access2007を使用しています。  さて、アクセスのクエリにおいて、特定のデータだけグループ化したいのですが、やり方が分かりません。理想は、下記例のとおりです。 【例】 テーブル名:T_地区 ID 地区名 会費 1  A   100 2  A   100 3  B   100 4  C   100 5  C   100 6  D   100 7  D   100 8  E   100 9  E   100 10 E   100 クエリ名:Q_地区_グループ化 IDの件数 地区名(グループ化) 会費の合計 2件    A          200 1件    B          100 1件    C          100 1件    C          100 2件    D          200 3件    E          300 ※Cは同名ですが、別々の地区となるため、C地区のみグループ化ならないようにしたいです。  どうかご教示を、よろしくお願いいたします。

  • Accessのクエリ(初心者)

    Access超初心者です。 クエリで悩んでいるので、お教えください。 テーブル1に CODE(商品ID)_NAME(名前)_SUU(数量)_DAY(日付)の4項目があり、 クエリを使って、最も大きいSUUを抽出したい (かつ最も大きいSUUのデータが重複している場合、その中で最も古い日付のデータのみを抽出したい)のですが・・・ たとえば、 テーブル内容: CODE(商品ID)_NAME(名前)_SUU(数量)_DAY(日付) A_あめ_600_0517 A_あめ_900_0518 A_あめ_400_0618 B_ガム_120_0217 B_ガム_060_0319 B_ガム_180_0718 B_ガム_180_0518 抽出結果: A_あめ_900_0518 B_ガム_180_0518 ということです。 デザインビューを使うとして、どのような方法がありますでしょうか? どうかご教授お願いします!

  • Accessのクエリによる集計が出来ない

    Accessのクエリによる集計が出来ない kamuycikapです。 OKWaveで様々な方のアドバイスを頂きながら、慣れないAccessと悪戦苦闘しております。 一昨日、計算したい表を作成する為にOKWaveに質問を載せました。 http://okwave.jp/qa/q5549286.html 無事に上記のアドバイスでリレーションのオプション設定を行い、集計計算したいクエリの結果を表示することが出来ました。 その表を元にして 下記の質問でアドバイス頂いた方法による集計を行おうとしたのですが、集計出来なくて困っています。 http://okwave.jp/qa/q5544785.html データベースの構成とキーは以下のとおりです。 --ここから <データベース構造:リレーションシップ> リレーションシップとテーブルの構成は下記の通りです。 -->がリレーションシップです。 Kがキーになります。 ■テーブルA      ■テーブルB    ■テーブルC    ■テーブルD K納品書コード --> K納品書コード --> K納品書コード  --> K納品書コード 仕入数          K商品コード  --> K商品コード   --> K商品コード                             K商品連番    --> K商品連番                             出品数量        K出品連番                             商品名           発送個数                             色             発送日付                             サイズ                             売値 ※テーブルCからテーブルDへのリレーションオプションを「’テーブルC’の全レコードと’テーブルD’の同じ 結合フィールドのレコードだけを含める。」としています。 <作りたいデータ> 納品書コード、商品コード、商品連番、商品名、色、サイズ、売値、仕入数、出品数量、発送個数、出品在庫数、倉庫在庫 <クエリ> ○グループ  納品書コード、商品コード、商品連番、商品名、色、サイズ、売値、仕入数、出品数量 ○合計(集計)  発送個数 ○出品在庫数(演算)  [出品数量]-[発送個数] ○倉庫在庫(演算)  [仕入数]-[発送個数] <データ状況> テーブルCのデータは約300レコードありますが、そのうち20件ほどしか商品が発送されていない為、テーブルDのデータは20件しかありません。 <望む結果> テーブルCのデータが全て表示され、紐つけられたテーブルDのデータがが存在する場合は、発送個数を表示し出品在個数を演算する。 演算した出品在個数を利用して、倉庫在庫も演算する。 <クエリの実行結果> テーブルCのデータが全て表示され、テーブルDに紐つけられたレコードも表示されるが、テーブルDに入力されている20件のデータが商品連番(テーブルCのフィールド)ごとに集計されない。 --ここまで <目的> お店に出品された商品は、日を分けて少しずつ売れていきます。(一日で全部売れることもありますが....) 従って、出品された商品(テーブルCのデータ)に対して売れていく数(テーブルDの複数のレコード)のデータがぶら下がっている形になります。 このようなデータベースですので、出品した商品が何個売れたかを計算する為には、商品に対する売れた個数を集計(合計)しなければなりません。 <結果> テーブルCの商品連番ごとの発送個数を集計したいのですが、テーブルDの出品連番ごとの集計になっている様子です。 <頂きたいアドバイス> 上記のデータベースとクエリで、テーブルCの商品連番に紐ついたテーブルDに格納されている発送個数の合計値を集計するための方法 以上、識者の方のアドバイスをお願い致します。

  • アクセス クエリ・集計・計算方法について

    アクセスの集計機能を使用して、品名毎の数量の合計と金額の合計を算出しようとしていますが、 思うようにできません。どなたか教えてください。 クエリのフィールドを左から・・・ (1)年月: Format([日付],"yyyy/mm")(集計:グループ化) (2)品名(集計:グループ化) (3)品名のカウント(集計機能:カウント) (4)単価(集計:グループ化) (5)金額: [単価]*[品名のカウント](集計:グループ化) このような形でクエリを実行していますが、すべての注文が1つだけなら問題ないのですが、実際には品名には数量が掛けられている場合もあり、現在設定しているクエリ設定では正しい数量の合計と金額の合計を出すことができません。どうか集計方法をご教授いただけないでしょうか。よろしくお願いします。 ■現在のテーブルの設計とリレーションを明記します。 【A】顧客テーブル (1)顧客ID (2)発注コード (3)氏名 【B】商品テーブル (1)商品ID (2)品名 (3)単価 【C】注文テーブル (1)注文ID (2)日付 (3)顧客ID 【D】注文明細テーブル (1)注文明細ID (2)注文ID (3)商品ID (4)数量 リレーション 【A】(1)-【C】(3) 【B】(1)-【D】(3) 【C】(1)-【D】(2)

  • 「Access2000」クエリー作成についてお教えください。

    たとえば、売上テーブルから売上先、商品、数量を抽出するクエリーを作成する場合、数量分のレコードを発生させたいのですが・・・。 つまり、売上テーブルに次のレコードがあったとき・・・  A商店 りんご 3個  B商店 みかん 2個 クエリーには以下のように表示させたいのですが・・・  A商店 りんご 3  A商店 りんご 3  A商店 りんご 3  B商店 みかん 2  B商店 みかん 2 以上、よろしくお願いします。

  • Accessのクエリ集計について

    Accessのクエリ集計について kamuycikapです。 テーブルを集計するクエリについて悩んでいます。 以下がテーブルの状況と試行錯誤しているクエリ。 そして実行結果の箇条書きです。 非常に長文ですが、識者の方のアドバイスをお願い致します。 --ここから <データベース構造:リレーションシップ> リレーションシップとテーブルの構成は下記の通りです。 -->がリレーションシップです。 ■テーブルA      ■テーブルB    ■テーブルC    ■テーブルD 納品書コード ーー> 納品書コード ーー> 納品書コード  ーー> 納品書コード 仕入数          商品コード  ーー> 商品コード   ーー> 商品コード                               商品連番    ーー> 商品連番                               出品数量        出品連番                               商品名           発送個数                               色             発送日付                               サイズ                               売値 <作りたいデータ> 納品書コード、商品コード、商品連番、商品名、色、サイズ、売値、仕入数、出品数量、発送個数、出品在庫数、倉庫在庫 <クエリ> ○グループ  納品書コード、商品コード、商品連番、商品名、色、サイズ、売値、仕入数、出品数量 ○合計(集計)  発送個数 ○出品在庫数(演算)  [出品数量]-[発送個数] ○倉庫在庫(演算)  [仕入数]-[発送個数] <データ状況> テーブルCのデータは約300レコードありますが、そのうち20件ほどしか商品が発送されていない為、テーブルDのデータは20件しかありません。 <望む結果> テーブルCのデータが全て表示され、紐つけられたテーブルDのデータがが存在する場合は、発送個数を表示し出品在個数を演算する。 演算した出品在個数を利用して、倉庫在庫も演算する。 <クエリの実行結果> テーブルCのデータが全て表示されず、テーブルDに紐つけられたレコードのみが表示されるため、約300件のデータではなく、テーブルDに入力されている20件しか表示されない。 --ここまで 目的は、テーブルCのデータを全て表示し、発送情報がテーブルDに入力されているデータについては演算結果を表示する事です。 現状では、テーブルDのデータしかテーブルCのレコードが表示されません。。。。 どうすれば目的のデータを収集できるクエリが作成で切るのか、識者の方のアドバイスをお願いします。

専門家に質問してみよう