Accessのクエリでテーブルを結合して表示する方法は?

このQ&Aのポイント
  • Accessのクエリを使用して複数のテーブルを結合し、特定の条件に基づいてデータを表示する方法について質問します。
  • 具体的には、「テーブルA」と「テーブル期間」と「材料テーブル」という3つのテーブルがあります。それぞれのテーブルには特定のフィールドがあります。
  • 「テーブルA」の月日の違いに基づいて、「テーブル期間」の分類を表示し、その後、現在の品番と分類に基づいて「材料テーブル」の使用量を表示するクエリを作成したいと思っています。しかし、具体的な方法が浮かばずに困っています。
回答を見る
  • ベストアンサー

Accessのクエリで2

お伺い致します。 テーブル名:テーブルA  フィールド:月日,販売先,品番 テーブル名:テーブル期間  フィールド:分類、始月日、終月日 テーブル名:材料テーブル  フィールド:品番,材料1,材料2, 分類 の3テーブルが有り ”テーブルA”の月日の違いで”テーブル期間”の分類を表示させた後 現在品番と分類で材料1、材料2の使用量をクエリで以下のように表示 クエリ名:Q_テーブルA 月日,販売先,品番, 材料1, 材料2 0501,東京販売,18-18, 270, 180...材料の使用量は月日と品番で決まる、 1105,仙台販売,18-21, 290, 190 0801,大阪販売,21-21, 300, 190 0907,東京販売,27-18, 350, 175  ここでお伺いしたい事は 材料テーブルの事ですが実際は品番が30種類、材料が10種類の300データに及び それに期間による材料テーブル1と2の2種類あります 各々の表はエクセルで計算させインポートさせた後ユニオンクエリで一緒にし テーブル作成クエリで”材料テーブル”を作成するという事をしていますが。 そのまま、テーブル1とテーブル2を月日の違いによる分類1,2でスイッチさせて クエリ”Q_テーブルA”を作成する方法が有りませんでしょうか 簡単に出来ると思いつつも良い方法が浮かばず回り道しています。 よろしくお願い致します。

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

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

>スキルアップをめざし初級者からを脱したい所です。 ということなら今の方法で進める方がいいですよ VBAを使えば何でも出来るので、 データベース的に変な方法を無理矢理にというのをよく見かけます VBAを使うのが上級者という考えは間違っています データベースを理解しましょう >どうも回り道しているようで! 今の方法の方が正道です >フォームで2つのクエリをスイッチさせるとか? フォームのレコードソースを書き換えてやることになります 手動でも変えられますが、自動化したければVBAで >SQLはこれから勉強しようと思っています。 VBAよりこっちの方が先でしょうね

acenoh
質問者

お礼

アドバイスありがとうございます。 >>SQLはこれから勉強しようと思っています。 >VBAよりこっちの方が先でしょうね クエリはデザインビューだけで作っていましたが 思い通り動くクエリが有ればSQLビューで どういう風に動いているのかを確認しながら 作成していきたいと思います、 今まで、デザインビューの編集で動けば、それで満足し SQLビューを開いた事がありませんでした。

その他の回答 (2)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

>やはり、2つのテーブルを分類コードで使い分けるのは無理ですか? クエリを2つ作って使い分けるか VBAでSQLを動的に書き換えてやることになりますね >ユニオンで合成する これが普通のやり方でしょう

acenoh
質問者

補足

ありがとうございます >VBAでSQLを動的に書き換えてやることになりますね まだ、Accessに関しては初級者でSQLはこれから勉強しようと思っています。 >クエリを2つ作って使い分けるか Q_テーブルAとQ_テーブルBを作ったとして、 どのようにして選択させるのでしょうか? フォームで2つのクエリをスイッチさせるとか?(イメージ出来ません) よろしかったら、もう少しヒントを下さいませんでしょうか? >>ユニオンで合成する >これが普通のやり方でしょう 現状はこのやり方で、ユニオンクエリDataを フォームのコマンドボタンで、自動的にテーブル作成クエリを実行させて、 ”材料テーブル”を作成しています。 これで充分目的を達しているのですが、どうも回り道しているようで! スキルアップをめざし初級者からを脱したい所です。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

テーブルを分けているから難しくなるのであって フィールドをもうひとつ増やして1つにしてしまえば済むことでは [材料テーブル](品番,材料1,材料2, 分類1、分類2) >期間による材料テーブル1と2の2種類あります 期間が重ならないのであれば、フィールドを増やす必要もないような

acenoh
質問者

補足

ありがとうございます。 現在 [材料テーブル] No,品番,材料1,材料2,,,,,,,材料10, 分類 1, 18-18,270,180,,,,1 2, 18-21,290,190,,,,1 3, 21-21,300,190,,,,1 4, 27-18,340,180,,,,1 , 30,,,,1 31, 18-18,280,185,2 32, 18-21,293,193,2 33, 21-21,310,193,2 34, 27-18,350,175,2 , 60,,,,,2 としていまして、最後の分類で 夏期間とそれ以外の季節とに分けています。 これで使っていまして現在、問題無いのですが  ここの材料値は込み入った計算を各セルごとにしなければ成らず エクセルで各セルに計算式を入れ2つのワークシート1,2を作成しています。 作成した。ワークシートをアクセスで加工(ユニオンで合成する等) 一つのテーブル[材料テーブル]にしています。 (ワークシート1,2はSheet1(各セルに式を書込)で夏とそれ以外の定数を変更するだけで、 Sheet2(夏用)、Sheet3(それ以外)をマクロで作成 強引に夏用に300セルを新規計算し1枚のワークシートにしてインポートすれば 済む事なのですが) やはり、2つのテーブルを分類コードで使い分けるのは無理ですか?

関連するQ&A

  • Accessのクエリで

    お伺い致します。 季節により材料の量目を変えて作る製品がありまして クエリのフィールドに 調合時期: Switch([月日]<="0715","1",[月日]<="0915","2",[月日]>"0915","1") のようにスイッチさせているのですが テーブル名:”テーブル期間”として 分類、始月日、終月日 1、0101、0715 2、0716、0915 1、0916、1231 を作りテーブルデータを変化させクエリに反映したいのですが どの様に考えればよいのでしょうか? (工場の所在地により月日を変化さる必要があります 所在地による気温の変化に合わせる為です。) SQLは取っ付き難く不得手で クエリのビューでフィールドや抽出条件等に式を書き込む方式位しか まだわかりません。クエリビューに書き込む方法で出来る方法が 有りましたら、お教えください。

  • accessのクエリについて

    テーブル1のフィールド ・品番 ・期間 ・生産数 テーブル2のフィールド ・品番 ・期間 ・使用数 上記のようなテーブルをもとに、品番と期間が一致した場合に生産数 - 使用数 を表示出来るようなクエリは作成できますでしょうか? 出来るなら,どのようにすればよいでしょうか? おわかりになられる方がいらっしゃいましたらご教授お願い致します。

  • Access 2000、ユニオンクエリーがどうしても出来ない!

    初歩の質問ですが、ユニオンクエリーが出来ません。 やりたい事は非常に単純です↓↓ 1:テーブル1、テーブル2、テーブル3があります。 2:各テーブルのデータ内容は様々ですが、共通項目として「品番」を持っています。但しテーブル1は「製品名」、テーブル2と3は「品番」という項目名になっています。 3:各テーブル内に、品番が幾つ入っているか、集計クエリでカウントします。項目名が違うので以下のように処理しました。  <テーブル1の場合>    フィールド|品番のカウント: 製品名|タイトル: "テーブル1"    テーブル |テーブル1     集  計 |カウント  <テーブル2(或いは3)の場合>    フィールド|品番のカウント: 品番|タイトル: "テーブル2"    テーブル |テーブル2     集  計 |カウント 4:3の集計クエリーを繋ぎ、テーブル1~3の品番件数を一気に表示させたい  <ユニオンクエリの内容>     SELECT *     from Q0_カウント_テーブル1     UNION select *     from Q0_カウント_テーブル2     UNION select *     from Q0_カウント_テーブル3; 5:私の予想としてはこんな風↓↓出てくるはずだったのですが・・・     品番のカウント| タイトル     ------------------------------        30   | テーブル1        20   | テーブル2        23   | テーブル3  6:結果は「From句の間違いです」と出ます。他の質問も見ましたが、自分のSQLのどこを直せば良いのかわかりません・・・教えてください!

  • アクセスのクエリ作成について

    下記のようなテーブルとフィールドがあるとします。 Aテーブル  会社名 分類 都道府県 住所 HPアドレス  Bテーブル  担当者 部署 電話 メールアドレス Cテーブル  受付番号 分類 Dテーブル  受付番号 分類 ここでAテーブルの都道府県で一致するデータを抽出し、 下記のフィールドを表示するクエリを作成したいと思っています。 A 会社名 分類 都道府県 住所 HPアドレス B 担当者 部署 メールアドレス 電話 C 受付番号 D 受付番号 クエリを作成し実行しましたが、何もデータが出てきません。 全フィールド入力していないと抽出できないのでしょうか。 中にはHPアドレス等がない場合もあるのです。 すみませんが、どなたか教えて下さい。 よろしくお願いします。

  • アクセス テーブル、クエリーについて

     アクセスでソフト作成中です。そこで教えてほしいことがあります。 たとえば下記のように2つのテーブルがあります。 テーブル1   テーブル2   フィールドA    フィールドB  a1       10  b1       20  c1       30          テーブル1の数値は固定します。そこで下記のようなクエリーを作成したいのです。 クエリー1 フィールドA フィールドB a1 10 b1 20 c1 30 テーブル2に数字を入れていくと テーブル1   テーブル2   フィールドA    フィールドB  a1       10  b1       20  c1       30           40 クエリー1 フィールドA フィールドB a1 40 b1 20 c1 30 このように数字が上書きされていくようなクエリーは作成できないでしょうか。(あくまでテーブル1の数値は固定、フィールドAとフィールドBにリレーションシップは設定されていない。) よろしくおねがいします。

  • Access クエリが入力できない

    Access 2003を使用しています 以前の担当のかたがつくったデータベースで、 会社で購入している薬剤を管理しているのですが、 これまでできたクエリの入力ができなくなってしまいましたので お力をかしてください。 テーブルA 管理番号 薬剤名 分類番号   ○ メーカー番号 ● 購入日 価格 テーブルB メーカー番号 ● メーカー名 テーブルC 分類番号   ○ 分類名 ○-○、●-●でリレーションシップでつなげています。 ある日、テーブルAのフィールドをいくつか増やしたところ テーブルA、B、Cをもとに作ったクエリの入力ができなくなってしまいました。 入力できるようにするにはどうすればよろしいでしょうか。 主キーは設定していません。 初心者なので、わかりやすく教えていただければうれしいです。

  • Access 予めクエリを作っておきたい2

    http://okwave.jp/qa/q9003552.html の続きです。 インポートしたファイルAの赤枠のフィールド名が毎回変わるので、 画像のようなクエリを毎回作成しないといけません。 毎回作成しなくていいように、青枠のフィールド名を可変にしたい・・・ ということです。

  • Access クエリ、レポートによる集計について

    クエリで目的の集計結果を出すために制作中なのですが 私の作り方が悪いようでレポートを作成する段階でAccessが フリーズしてしまいます。 集計内容テーブル構成は以下のとおりです。 (マーケティング処理用のデータベース) 一つの企業がいくつもの店を持っています。 企業用のデータと店用のフィールド項目は同じですが一対多を保つためにテーブルを分けています。(企業側が一、店側が多。) このように一つの企業に対して店がいくつもある場合、多店舗と呼んでいます。 この多店舗を持つ企業データだけで1500社程度あります。 多店舗のデータは1万件ほどです。 一つの企業に対して一つの店しかない単独店のデータもあります。 企業用と店用を分ける必要が無いので単独店のデータは一つだけです。 今の段階では企業テーブルに多店舗の企業データ。 店テーブルに多店舗のデータと単独店のデータとなっております。 別テーブルに商品分類テーブルがあり、フィールドとしては構成比、分類IDとなっています。 この商品分類を横並びにするためにクロス集計クエリを使い横並びにしました。分類は15品目程度あります。 ついでに構成比と別テーブルにある売上を元にパーセントを金額に直しています。抽出条件に売上100000以上としています。 クエリ名:●販売高(すべて) http://upload.jpn.ph/img/u14091.txt 県ごと企業ごとの集計をしたいので、 フィールドは 都道府県、掲載拒否(0)、データレベル(10)、企業コードをグループ化。以下商品分類は合計と設定しています。  クエリ名:◆多店舗販売高(仮名) (データレベル、00が単独店 10が多店舗)  (掲載拒否、1の場合は拒否) ttp://upload.jpn.ph/img/u14092.txt 単独店は一店舗だけなので多店舗のような企業ごとの集計はする必要がありません。販売高クエリを使いデータレベル00、掲載拒否0、商品分類や企業コードを入れただけです。 これで完成ではなく、掲載拒否の合計データを入れる必要があります。 フィールドとしては、都道府県、店名、掲載拒否(1)、企業コードでグループ化、以下商品分類は合計。 これら3つの集計内容をユニオンクエリで一つにしています。 (多店舗販売高+企業名、単独店販売高、その他販売高)(県別集計) 多店舗販売高に関しては後から企業名を別クエリで足しています。 フィールド数、フィールド名を合わせる為に、その他販売高クエリの、店名及び企業コードはNULLで設定しています。 このユニオンクエリをレポートで設定し、グループレベルでトップを県、 二番目に掲載フィールドを設定。 集計は分類のすべてを合計で設定。 県でグループ化して、その他とそれ以外の合計を出したいので掲載フィールドをユニオンクエリを作成する前段階で追加しました。 (掲載1はその他、それ以外は0) 集計したい内容をエクセルで簡単に表すとこういう感じです。 ttp://upload.jpn.ph/img/u14090.jpg 社数やシェアなどの計算はクエリでさらに作成しなければならないのでしょうか?

  • 更新クエリが実行できず、困っています。

    以前こちらで、更新クエリについて教えて頂きましたが、 実行できず、困っています。 在庫クエリで計算した在庫数を、部品マスタの現在庫に代入する 更新クエリを実行すると、 「更新可能なクエリでなければなりません」とエラー表示されます。 UPDATE T_部品マスタ AS A INNER JOIN Q_在庫 AS B ON A.部品品番=B.部品品番 SET A.現在庫 = B.在庫数; と作成しました。 以下に、作成したデータベースを書き出してみます。 どこが悪いのか、ご指摘頂ければ幸いです。 よろしくお願いします。 部品分類テーブル 部品分類ID(主キー) 部品分類名 保管場所テーブル 保管場所ID(主キー) 保管場所 部品マスタテーブル(T_部品マスタ) 部品品番(主キー) 部品分類ID 保管場所ID 部品名 現在庫 入出庫テーブル 入出庫ID(オートナンバー) 日付 部品品番 入庫数量 出庫数量 入出庫テーブルを元にクエリを作る 入庫クエリ 部品品番 入庫数量の合計 出庫クエリ 部品品番 出庫数量の合計 在庫クエリ(Q_在庫) 部品品番(部品テーブル) 部品名(部品テーブル) 入庫数量の合計(入庫クエリ) 出庫数量の合計(出庫クエリ) 在庫数(nz([入庫数量の合計])-nz([出庫数量の合計])

  • accessのクエリで入力が不可能…

    【テーブルA】 フィールド1〔数値型〕 フィールド2〔テキスト型〕 フィールド3〔テキスト型〕 フィールド4〔数値型〕 【テーブルB】 フィールド1〔数値型〕 フィールド2〔テキスト型〕 フィールド3〔数値型〕 フィールド4〔テキスト型〕 となっています。 両方のテーブルを使い、クエリを作成しました。 リレーションが、テーブルAのフィールド1と、テーブルBのフィールド3に設定してあります。 このようにして作成したクエリでデータの入力ができません。 なぜでしょうか? Access2000です。

専門家に質問してみよう