Accessで前回発注分だけ抜き出すクエリの作成方法

このQ&Aのポイント
  • Accessで発注テーブルから、前回の発注分のレコードだけを抜き出すクエリの作成方法を教えてください。
  • 発注テーブルの構成は商品コード、発注数、発注日です。A-1の2014/07/10の発注分、A-2の2014/07/12の発注分、B-3の2014/07/18の発注分を抜き出したいと思います。
  • SQL文とモジュールが使えないため、クエリのデザインビューで作成方法を教えてください。
回答を見る
  • ベストアンサー

Accessで前回発注分だけ抜き出すクエリは

お世話になっております。 Accessで発注テーブルから、前回の発注分のレコードだけ を抜き出すクエリがあれば教えてください。 発注テーブルの構成としては 商品コード 発注数 発注日 A-1     15    2014/07/05 A-1     10    2014/07/10 A-2     25    2014/07/12 B-3    30 2014/07/14 B-3     30    2014/07/18 という構成になっており、この場合、 A-1の2014/07/10の発注分 A-2の2014/07/12の発注分 B-3の2014/07/18の発注分 をクエリで抜き出したいと思います。 当方SQL文とモジュールが使えませんので クエリのデザインビューでの方法をご教授 いただけますとありがたいです。 どうぞよろしくお願いいたします。

  • yy1192
  • お礼率71% (185/258)

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

  • ベストアンサー
  • kama-milk
  • ベストアンサー率42% (11/26)
回答No.1

クエリのフィールドに商品コード、発注日を表示させます 「Σ」という集計ボタンを押します。 その集計項目で[商品コード]は「グループ化」、[発注日]は「最大」を選びます。 商品コードで"グループ化"することで、「商品コード毎の」という設定になります さらに[発注日]で"最大"に指定してるので、「商品コード毎の最大」という見方です。 SQL文はわからないとの事ですが、 もし上の説明もわからないようでしたら下記をコピーし、「表示」の切り替えを「SQLビュー」にして貼り付け、再度「デザインビュー」、「データシートビュー」に切り替えても今回は簡単な分なのでうまくいけると思います。 ただ、下記にある項目名が違う場合は修正してくださいね。 テーブル名は"発注"にしています。 テーブル名が違うときはこの「発注」と書いてあるところを置き換えてください。 他の項目名"商品コード"、"発注日"も同様に。 SELECT 発注.商品コード, Max(発注.発注日) AS 発注日の最大 FROM 発注 GROUP BY 発注.商品コード;

yy1192
質問者

お礼

ご回答ありがとうございました。いただいた内容で試してみます。どうもありがとうございました。

その他の回答 (1)

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.2

テーブル名を ★★ と仮定します。 以下をクエリのSQLビューに記述後、デザイン表示して、 指定の仕方を確認してください。 データシートビューで表示すると、得たいものが表示されるかも・・・ SELECT * FROM ★★ AS Q1 WHERE 発注日=(SELECT Max(発注日) FROM ★★ WHERE 商品コード=Q1.商品コード); 意味を解説しておくと、 ・テーブル ★★ のものを全部表示しましょう SELECT * FROM ★★ 対象は・・・というと ・発注日が、表示しようとしている 商品コードの中で最大(直近)のもの 表示しようとしている発注日 = ( SELECT Max(発注日) FROM ★★ WHERE 商品コード= ▲▲ ) この ▲▲ が、表示しようとしている商品コード 表示しようとしているテーブル ★★ に、別名 Q1 を付けておいて FROM ★★ AS Q1 ▲▲ 部分に Q1.商品コード ・・・ 表示しようとしている商品コード つまり、 ・表示しようとしている発注日が ・表示しようとしている商品コードの最大(直近)の日付のもの という指定方法になっています。 ※ 使えないのでできません・・・ このフレーズは、いつまで有効なのでしょうか? 上記は追加/更新可能ですが見るだけで良いのなら以下の方法も 以下の内容でクエリ「☆☆」を作っておきます。 SELECT 商品コード, Max(★★.発注日) AS 発注日 FROM ★★ GROUP BY 商品コード; このクエリ ☆☆ と、元々のテーブル ★★ を表示して 商品コード、発注日 の2つを結び付けたクエリを作成しデータシートビューで表示してみます。 ちなみに SQL ビューで見た時の内容は SELECT ★★.* FROM ★★ INNER JOIN ☆☆ ON ★★.商品コード=☆☆.商品コード AND ★★.発注日=☆☆.発注日; それぞれ、SQL ビューで記述後、デザインビューでの記述方法を確認してください。

yy1192
質問者

お礼

ご回答ありがとうございました。SQL文は苦手ですが、試してみます。

関連するQ&A

  • Access クエリについて

    Accessのテーブル1に、フィールド「コード」「回数」があり、レコードとして A,32 B,20 C,13 ・・・というように、ランダムなコードと回数がセットされているとします。コードは主キーです。 このテーブル1を元にしたクエリで A,1 A,2 A,3 ・・・ A,32 B,1 B,2 ・・・ B,20 C,1 C,2 ・・・ C,13 というように、コードごとに「回数」と同じ数のレコードがクエリ上に生成されるようにしたいのですが、こういうことは出来るのでしょうか?出来ればSQLで回答いただけないでしょうか。

  • アクセスのクエリで出来る事なのでしょうか?

    以下の様な処理がクエリで出来るものかの判断がつかず、また、出来るとしてもクエリの作り方が判りません。。。 [テーブルA] コード 品名  種類 1111  A    0 1111  A    1 1111  A    2 1111  A    3 2222  B    0 2222  B    1 2222  B    2 2222  B    3 2222  B    4 3333  C    0 3333  C    1 3333  C    2 3333  C    3 3333  C    4 3333  C    5 3333  C    6 以上の様なフィールド構成を持つテーブルです。 「コード」で管理される「品名」の持つ「種類」の列の最大値を、新しく追加した「在庫」列を持つテーブルBの「在庫」列に抽出して以下の様に同一「コード」内に全て書き込みたいと思っておりますが、クエリ作成の勉強を始めたばかりで、上記の様な複雑(?)なクエリの作り方が判りません。 ※簡単なクエリをデザインビューで作ったり、SQL ビューで簡単な改造が出来る位です。 [テーブルB](処理後) コード 品名  種類 在庫 1111  A    0   3 1111  A    1   3 1111  A    2   3 1111  A    3   3 2222  B    0   4 2222  B    1   4 2222  B    2   4 2222  B    3   4 2222  B    4   4 3333  C    0   6 3333  C    1   6 3333  C    2   6 3333  C    3   6 3333  C    4   6 3333  C    5   6 3333  C    6   6 尚、「種類」列の値は必ず0から順番に(012345・・・の様に)並ぶ規則となっております。 テーブルAに「在庫」列を追加挿入してから「種類」の最大値を書き込む方法でも、テーブルB(テーブルAをコピーして「種類」列を追加したテーブル)に書き込ませる方法でもどちらでも問題はありません。 どなたかご教示頂ければと思います。宜しくお願い致します。  

  • Accessのクエリの抽出式について

    アクセスの基本しか知らないため、質問がわかりにくいかもしれませんがお教えください。 AテーブルとBテーブルがあり、共通の商品コードがあるとします。 そしてAテーブルにあるが、Bテーブルにはない商品コードがあった場合に、その該当分だけ表示できるようにしたいのです。 これはクエリで、できるものでしょうか? クエリでできるとしたら、デザインビューの画面で言うとどこをどのように設定したらいいのか、わかりやすく教えていただけたら幸いです。 この問題が解決したら、続きでもうひとつ質問したいと思っています。申し訳ありませんが、よろしくお願いいたします。

  • アクセスの追加クエリについて

    二つのテーブル間(AとB)を追加クエリを使い AからレコードをBに追加することは出来たんですが、 逆にBからAにレコードを追加しようと選択クエリを追加クエリに変更しようとしたんですが、ウィザードの追加先テーブル名にAのテーブル名が表れないですがその理由が全く分からないので分かる方教えていただけませんか? AとBのレコード内のフィールドは同じです。 AからBにレコードを移行する処理としてマクロを使いアクションとして ・クエリを開く(これは追加クエリです) ・SQLの実行(上と同じクエリを削除クエリに変更し、そのSQL文をSOLステートメントに貼り付けました) 上の処理は問題なく出来たので逆のBからAへレコード移行処理のマクロを作ろうとしたのですが、追加クエリの追加先テーブルにテーブルAの名前が出てこないので困っています。こういったAからB。BからAという処理は追加クエリで出来ないのでしょうか?

  • アクセスのクエリでレコード削除ができません。

    アクセス超初心者です。 テーブルを商品コードでくっつけて、クエリのデザインビューで表示しました。 いらないレコードを削除しようとしたところ、できません。 くっつける前の、テーブルではできますが、クエリで実行させ、レコードを削除しようとしたところできません。 どうしたらよいのか教えてください。 あと、もうひとつ、クエリで、出力したいフィールド名をドラッグしたあと、削除したいときには、どうすればよいでしょうか? 表示しないなら、できるのですが・・・。削除がわかりません。 よろしくお願いいたします。

  • ACCESSのクエリの作り方

    テーブル名   在庫 商品コード 品名 入庫日 在庫量 ・・・ があります データとして A0000,在庫品1,2005/10/10,50 A0000,在庫品1,2005/12/25,70 A0000,在庫品1,2005/12/28,20 B0000,在庫品2,2005/12/28,10 B0000,在庫品2,2005/12/29,5 C0000,在庫品2,2005/12/30,30 という具合になります。 入庫日の都合上、商品コードがユニークになりません。 この場合 フォームを作って 商品コードをユーザーに入力させ、在庫量を表示させるにはどうしたら良いのでしょうか? 例えば"A0000" だと140になります。 SQLで商品コード=ユーザー入力文字列・・・ とかいうのは知っているんですがACCESSの使い方がよくわかりません、 デザインビューでクエリを作成するとかやるとこの場合固定(商品コードが)されて しまうようです。ユーザーに求めることは出来るのでしょうか?

  • アクセス 削除クエリ☆★

    アクセス初心者です。 テーブル【在庫】 メーカー名 ナンバー A社     1 B社     2 C社     3 テーブル【出庫】 ナンバー 1 3 削除クエリ実行 ↓ テーブル【在庫】 B社     2 在庫、出庫テーブルがありナンバーが一致する場合は在庫テーブルの行を削除したいのです。 初心者でSQLがまったくわかりません。 デザインビューでは出来ないものなのでしょうか?? おわかりの方教えてくださーい!

  • ACCESS2000 ビューの切り替えについて

    あるクエリ(A)を修正するために別のクエリ(B)をデザインビューで参照してたのですが、ちょっとした興味からSQLビューにしてみました。 それがいけなかったのか、以降、データベースウィンドウから(B)をデザインビューで開こうとしても、必ずSQLビューで開くようになってしまいました。 これを元に戻す(デザインビューで開くようにする)にはどうすればよいでしょうか。 ※なお、(A)や他のクエリは問題なくデザインビューで開けております。

  • ACCESSのクエリで同じSQL文だが結果が異なる

    ACCESS2003にて 選択クエリAをSQLビューで開きSQL文をコピー、 新規作成したクエリBのSQLビューに貼り付けて実行したところ、 AとBで結果の件数が異なりました。 そのままBを保存して終了。 BをSQLビューで開き、 SQL文の末尾の;を削除して実行すると、 Aと同じ件数の結果になりました。 再度Bを保存して終了し、 BをSQLビューで開き、 SQL文の末尾の;を削除して実行すると、 Aと異なる件数(元の結果)になりました。 何が原因なのでしょうか。 SQL文の内容は、サブクエリを含んでいて、サブクエリのFROMは SQLSERVERのリンクテーブルです。 よろしくお願いします。

  • 複数テーブルの不一致クエリについて

    SQLで、下記selectを行いたいです。 テーブルA テーブルB テーブルC これら三つのテーブルには、同一のコードが振られています。 この三つのテーブルのひとつにでも、抜けているコードを抜き出したいです。 (テーブルAのコード=テーブルBのコード=テーブルCのコードになっていないコード) 例) テーブルAに入ってるコード(1.3.5) テーブルBに入っているコード(1.4.5) テーブルCに入っているコード(1.5.6) このとき、三つのテーブルにきちんと入っているコードは、1と5だけなので、それ以外のコードを抜き出す→3.4.6 これをSQLで行う場合、簡単なSQL文はありますでしょうか? 今、考えているのは、各テーブルすべてをinner joinしたviewを作成し(これにより三つとも入ってるコードの一覧ができる)、 そのviewと、テーブルA、テーブルB、テーブルCそれぞれをひとつづつleft joinして、不一致データを取り出す方法です。 でも、そうすると、viewを作成しなくてはいけず、また、SQLをテーブルの数分(今回は3回)投げなくてはいけなくて。。 もっと、単純にかけないものでしょうか? ご存知の方、教えてください。

専門家に質問してみよう