OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

Accessのクエリでフィールドの一番大きな数字を抽出させるには?

  • すぐに回答を!
  • 質問No.159519
  • 閲覧数1363
  • ありがとう数3
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 67% (38/56)

OSはWin98SE
Access2000です。
多分簡単なことなのかもしれないのですが、追加クエリの抽出条件を使って、
その列(更新回数)でいちばん大きな数字のみ別テーブルに抽出(追加)させたいのですがその式がわからず悩んでいます。

例(主キーなし)
店番号|商品番号|更新回数|金額|・・・
001 |A021  |  2 |300 |・・・
002 |A034  |  1 |200 |・・・
001 |A122  |  1 |150 |・・・
001 |A043  |  3 |500 |・・・

上記で店番号001が3データ入っている中の更新回数が3のデータのみ別のテーブルに追加したいのですが、最大を求めるのでMaxやDMaxを使用したらよいのかな?などと思ったのですが、その先の式の書き方がわからないのでどなたか教えていただけませんか。
どうぞよろしくお願いします。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル11

ベストアンサー率 34% (97/285)

三度storkです。

蛇足ですが、先ほどの回答は、SQLを直書きするものだったんで、練習用にGUIでの操作で最新データの取り出し方を補足しておきます。

from句に入っているSQLをクエリとして保存してください。
クエリ名は、[最新データ]
-------------------------------------------
select 店番号,max(更新回数) as max更新回数
from [PC売上_T] group by 店番号
-------------------------------------------
どんなクエリになっているかは、デザインビューとデータシートビューで確認してください。

もうひとつクエリを作ります。
デザインビューで[PC売上_T]とさっき作った[最新データ]を追加して、店番号で結合し、さらに更新回数で結合します。結合線がふたつ出来ます。

これで最新のデータのみを抽出するクエリの出来上がりです。

この二つのクエリを一回で済ませると、#1のSQLになります。クエリを二つに分けていると誤ってクエリ[最新データ]を削除すると動作しなくなるので、出来るだけひとつにしましょう。
お礼コメント
tokin

お礼率 67% (38/56)

storkさん回答ありがとうございます。
また、質問しておきながらお返事が遅くなりまして申し訳ありません。
直書きのSQLは、まだみて理解できるところまで行っていないので
勉強して行きたいと思っています。
補足でいただいたGUIでの操作ありがとうございます。
これなら私にもわかりそうです早速試してみます。
昨日に続き今日も外出になりそうですのでこの質問は一度閉じさせていただきます。
もし、実行してみてわからないときは、また質問させてください。
そのときはどうぞよろしくお願いいたします。
本当に勉強になりますありがとうございました。
投稿日時 - 2001-10-31 11:41:19
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル11

ベストアンサー率 34% (97/285)

過去ログに同じ問題があるのでそれの応用だと思います。 店番号+更新回数でユニークになりますね。 select * from table1 inner join (select 店番号,max(更新回数) as max更新回数 from table1 group by 店番号)as table2) on (table1.店番号=table2.店番号) and (table1.更新回数=tabl ...続きを読む
過去ログに同じ問題があるのでそれの応用だと思います。

店番号+更新回数でユニークになりますね。

select *
from table1 inner join (select 店番号,max(更新回数) as max更新回数 from table1 group by 店番号)as table2) on (table1.店番号=table2.店番号) and (table1.更新回数=table2.max更新回数)
補足コメント
tokin

お礼率 67% (38/56)

storkさんたびたびありがとうございます。
また、返事が遅くなりすみません。
昨日回答いただいてから色々とやってみたのですが、私のSQL知識不足でうまくいきませんでした。
すみませんが少し質問させてください。
SQL中のtable1やtable2は指定するテーブル名を指定したら良かったでしょうか。

それと追加クエリで現在
INSERT INTO PC売上_M(店番号,商品番号,更新回数,金額・・・)
SELECT [PC売上_T].[店番号],[PC売上_T].[商品番号],[PC売上_T].[更新回数],[PC売上_T].[金額]・・・
FROM PC売上_T;
のような感じであるのですが、教えていただいたSQLはどこの部分に追加したらよいのでしょうか。
お手数ですがどうぞよろしくお願いします。
投稿日時 - 2001-10-30 09:50:50
  • 回答No.2
レベル11

ベストアンサー率 34% (97/285)

似たような質問だと思ったら同じ方でしたか、失礼しました。 >SQL中のtable1やtable2は指定するテーブル名を指定し >たら良かったでしょうか。 回答#1のSQLはひとつのテーブルを切り口を変えて自己結合しています。 table1はテーブル名で、table2はtable1を元にしたクエリに別名(仮の名前)をつけているだけなんで、何でもいいです。 補足の内容からいくとtable1 ...続きを読む
似たような質問だと思ったら同じ方でしたか、失礼しました。

>SQL中のtable1やtable2は指定するテーブル名を指定し
>たら良かったでしょうか。
回答#1のSQLはひとつのテーブルを切り口を変えて自己結合しています。
table1はテーブル名で、table2はtable1を元にしたクエリに別名(仮の名前)をつけているだけなんで、何でもいいです。

補足の内容からいくとtable1は[PC売上_T]ですかね。

>教えていただいたSQLはどこの部分に追加したらよいので>しょうか。
[PC売上_T]が履歴形式のトランザクションで、[PC売上_M]が最新情報のマスタですね。

from句以下を
-----------------------------------------------
from [PC売上_T]
   inner join
   (select 店番号,max(更新回数) as max更新回数
    from [PC売上_T] group by 店番号 ) as 最新データ
   on ([PC売上_T].店番号 = 最新データ.店番号)
   and ([PC売上_T].更新回数 = 最新データ.max更新回数)
------------------------------------------------
※別名が[table2]だと分かりにくいので[最新データ]としました。

ただ追加するだけだと、前の質問(http://www.okweb.ne.jp/kotaeru.php3?q=155505)と同じ問題が発生すると思われますので、何らかの方法で回避してください。(分からなければ補足してください。)
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ