• ベストアンサー

accessのクエリについて

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

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

以下のようなことですか。 SELECT テーブル1.品番, テーブル1.期間, [テーブル1]![生産数]-[テーブル2]![使用数] AS 差分 FROM テーブル2 LEFT JOIN テーブル1 ON (テーブル2.期間 = テーブル1.期間) AND (テーブル2.品番 = テーブル1.品番);

con014057
質問者

お礼

ありがとうございます。 求めていた結果を得ることができました。 SQLについてもっと勉強した方が便利ですね。

その他の回答 (1)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

品番、期間が一致するものだけを抽出するのか、テーブル1を 主体にするのか、テーブル2を主体にするのかで、違います。 ★両方が一致するものだけを抽出 SELECT A.品番,A.期間,Nz(A.生産数,0)-Nz(B.使用数,0) AS 差分 FROM テーブル1 AS A INNER JOIN テーブル2 AS B ON A.品番=B.品番 AND A.期間=B.期間 ORDER BY A.品番,A.期間 ★テーブル1が主体 SELECT A.品番,A.期間,Nz(A.生産数,0)-Nz(B.使用数,0) AS 差分 FROM テーブル1 AS A LEFT JOIN テーブル2 AS B ON A.品番=B.品番 AND A.期間=B.期間 ORDER BY A.品番,A.期間 ★テーブル2が主体 SELECT A.品番,A.期間,Nz(B.生産数,0)-Nz(A.使用数,0) AS 差分 FROM テーブル2 AS A LEFT JOIN テーブル1 AS B ON A.品番=B.品番 AND A.期間=B.期間 ORDER BY A.品番,A.期間 クエリのSQLビューで上記のいずれかを直接記述してください。

con014057
質問者

お礼

ありがとうございます。 No.1の方の方法でもできましたが,主体によって,SQL文を書きかえる必要があり勉強になりました。

関連するQ&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”を作成する方法が有りませんでしょうか 簡単に出来ると思いつつも良い方法が浮かばず回り道しています。 よろしくお願い致します。

  • ACCESS クエリでの抽出の方法について

    毎度お世話になっております。 ACCESS2003、SQLSERVER2000を使用しています。 以下のテーブルがあります。 テーブル1 フィールド1   フィールド2   A        10   A        20   A        -10   B         1   B         2   B         3 フィールド1をグループ化し、 フィールド2に0より小さい数がある場合はNG、 ない場合はOKと表示したいのです。 希望する結果 フィールド1   フィールド2   A         NG   B         OK 私が考えた方法は、 1.クエリ1(フィールド2が0以下のフィールド1を抽出する)を作成 2.テーブル1とクエリ1をLEFT JOINし、IS NULL ならOK、そうでないならNGを表示 としました。希望した結果は得られましたが、 もっとスマートな方法(一つのクエリでできるような方法)、 または別解をご教授ください。 よろしくお願いします。

  • アクセス・選択クエリについて

    アクセス・選択クエリについて こんにちは。現在、選択クエリについて悩んでおります。 テーブルAとテーブルBからそれぞれ3つのフィールドを選び、選択クエリを作成。しかし、出来上がったクエリのデータシートには一切データが表示されていません。ならばと思い、テーブルAからだけ3つのフィールドを選びクエリを表示させると、きちんと表示します。テーブルA,テーブルBには当然主キーが設定されていますが、その事と関係するのでしょうか?ご存知の方、どうか教えてください。宜しくお願い致します。

  • Accessのクエリ作成について

    クエリを作成する際の、テーブルの設定の仕方がよくわかりません。 たとえば、「顧客リスト」テーブルと「販売履歴」テーブルに、それぞれ「顧客ID」フィールドがあり、「顧客ID」フィールドがリレーションシップで設定されているとします。 新たに、選択クエリを作成し、そのクエリに、「顧客ID」フィールドを設定するときに、どちらのテーブルの「顧客ID」フィールドを設定するかがわかりません。 ちなみに顧客IDフィールドには、リレーションシップを設定していて、1対多の設定をしています。 「顧客リスト」テーブルの「顧客ID」フィールドが、「1」の側で、 「販売履歴」テーブルの「顧客ID」フィールドが「多」の側です。 どちらのテーブルを使用しても結果は同じなのですが、 選択クエリを作成するときに、上記のように、同じフィールドを持テーブルが2つありリレーションシップを 設定している場合は、どちらのテーブルを使わないといけないというような決まりはあるのでしょうか? どちらを使用しても構わないのでしょうか。 特に、決まりがない場合は、一般的には、どのように設定されているのでしょうか?

  • Accessのクエリ作成について

    クエリを作成する際の、テーブルの設定の仕方がよくわかりません。 たとえば、「顧客リスト」テーブルと「販売履歴」テーブルに、それぞれ「顧客ID」フィールドがあり、「顧客ID」フィールドがリレーションシップで設定されているとします。 新たに、選択クエリを作成し、そのクエリに、「顧客ID」フィールドを設定するときに、どちらのテーブルの「顧客ID」フィールドを設定するかがわかりません。 ちなみに顧客IDフィールドには、リレーションシップを設定していて、1対多の設定をしています。 「顧客リスト」テーブルの「顧客ID」フィールドが、「1」の側で、 「販売履歴」テーブルの「顧客ID」フィールドが「多」の側です。 どちらのテーブルを使用しても結果は同じなのですが、 選択クエリを作成するときに、上記のように、同じフィールドを持テーブルが2つありリレーションシップを 設定している場合は、どちらのテーブルを使わないといけないというような決まりはあるのでしょうか? どちらを使用しても構わないのでしょうか。 特に、決まりがない場合は、一般的には、どのように設定されているのでしょうか?

  • アクセス クエリがうまく動きません

    添付画像をご覧ください。 「品番」フィールドと「品番の大文字化」フィールドとを比較し、その結果を「判定」に返すクエリを作成しました。小文字を含んだ品番があった場合、判定で1で返すようにしているのですが、「判定」の抽出条件に1を入力して、クエリを実行すると、パラメータの入力が求められてしまいます。 結果としては、判定:1のみを抽出したかったのですが、それがうまくできません。 どうしたらよいでしょうか。。 「品番」フィールド →品番 「品番の大文字化」フィールド →品番大文字化: StrConv([品番],1) 「判定」フィールド →判定: StrComp([品番],[品番大文字化],0)

  • Access2003にて・・・

     こんにちは。Accessにて、詰まってしまいまして、お知恵をお借りできればと思っています。よろしくお願いします。 Access2003 にて テーブルAには、 品番、品名、単価の3つのフィールドがあります。 このテーブルをもとにして、フォームAを単票形式で作成しました。 このフォームを、品番を登録したりするためではなく、品名や単価の確認用として使用したいと考えています。そこで、「品番」コントロールに品番を入力すると、あとの2つのコントロールに自動でデータが表示されるようにできればいいな、と思いました。  「品番」コントロールはコンボボックスに変更し、テーブルAの品番から値を取得するよう設定し、ここを入力したあと更新後処理であとの2つのコントロールに値を表示するような設定をするのかな、というところまで至って、はてここにどのような処理を書き込めばいいのかで詰まってしまいました。  このやり方がそもそも間違っているのかもしれません。テーブルをもとにするのではなく先にクエリを作っておくのがいいのかもしれませんが、自分なりにいろいろ試してみたのですが、なかなかうまくいかなくて…  何か方法はありますでしょうか?他にここへ組み込むサブフォームやら、別のフォームを表示させるボタン等考えているのですが、上記の方法ができるかできないかでフォームAのつくりを変えようと思っているので、とりあえずは必要と思われることだけ書きました。言っていただければどんどん補足させていただきますので、何か方法がございましたらご教授お願いいたします。 (ちなみに、私のAccessレベルは初心者でございます…)

  • 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のどこを直せば良いのかわかりません・・・教えてください!

  • アクセスクエリ

    アクセスクエリのフィールド MS-accessのクエリで質問です クエリで、3つのテーブルがあります。 どのテーブルのフィールドにも[売上]があります。 この3つのテーブルの[売上] フィールド1列に表示させる方法はありませんか

  • Accessクエリにて

    お世話になります。 下記テーブルがあります。 ■型番テーブル ID 型番 数量 1  A   1 2  B   1 3  C   1 4  D   1 5  E   1 ■発売日テーブル ID 型番 発売日    削除 1  A   2010/01/01 False 2  B   2010/05/01 False 3  C   2011/03/01 False 4  D   2011/05/01 True 5  E   2011/06/01 False ■上記テーブルを用いたクエリ ・型番テーブルの「型番」と発売日テーブルの「型番」を  紐付ける ・表示したいフィールドは「型番」「発売日」。 ・表示したいのは型番テーブル全件(5レコード)。 ・発売日テーブルの削除がTrueの場合、発売日を空白とする。 *************** ここで質問です。 型番テーブルの全件を表示したいところですが、条件として発売日テーブルの 削除がFalseである為、型番Dが表示されません。 発売日テーブルであらかじめ削除がFalseのみでクエリを作成し、そのクエリと 型番テーブルの「型番」で紐付ければ全件表示されることは分かっており ますが、1つのクエリで表示する方法をご教授頂ければと思います。 宜しくお願い致します。