- 締切済み
Aceessで、一致した番号の中から最大を求めたい
OS:vista Accessのver:2010 Accessのクエリを作成しておりますが、うまくいかずに困っております。 メインテーブル サブテーブル 氏名コード ID 氏名コード 日程 上記2つのテーブルからクエリを作成しており、サブテーブルには同じ氏名コードで複数の日程が存在します。後から追加されたものほど、IDは大きいです。 クエリを作成する際に、フィールドに氏名コードが一致していて、且つIDが最大の日程を表示させたいと考えています。(存在しない場合は空白) Dlookup関数やDmax関数など色々試してみましたが、どうにもうまくいきません。 この場合どのような関数を用いて作成すればよいのでしょうか。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- hatena1989
- ベストアンサー率87% (378/433)
> 集計クエリを使ってIDが最大のものを抽出して、クエリとメインテーブルの氏名コードをリンクさせ該当するもの表示というのは試してみました。 > > ですが、そうすると表示するまで遅くなったりして、どうしても一つのクエリの中で完結させて、作りたいです。 具体的にどのようにしたのか、明確でないので、現状のSQL文をコピーして貼り付けてもらえるとアドバイスしやすいですね。 後、確認ですが、 サブテーブルの ID は主キーですか。 サブテーブルの 氏名コードには、インデックスは設定してありますか。 メインテーブルの氏名コードは主キーですか。 メインテーブル、サブテーブルのレコード件数はそれぞれ何件ですか。 上記の点についても情報提供してください。 あと、一つのクエリで完結させれば早くなるとは限りません。 SQLサブクエリを使えば一つのクエリにまとめることはできますが、 やっていることは複数のクエリと変わりませんので。 SQL文が読めないなら、複数のクエリにするほうが理解しやすいと思います。
関数を使うんじゃなくて集計クエリをつかうといいです。 まぁSQLの関数を使っているんで、「関数を使わない」というのは厳密にいうと間違いなんでしょうが。 集計クエリについては、ここら辺↓みてみてください。 http://www.mahoutsukaino.com/ac/ac97/basic/s_query1.htm http://www.accessclub.jp/samplefile/samplefile_194.htm http://office.microsoft.com/ja-jp/access-help/HA010096310.aspx 大概例として"合計"の方法が書いてありますが、あなたの場合は"最大"というのを選べばいいです。 メインテーブルとサブテーブルを基にしたクエリをつくって、氏名コード同士を線で結びます。 氏名コード(どっちのテーブルから選んでもいい)とIDを表示させ、IDのところを"最大"にします。 存在しない場合は空白、というのは、その集計クエリの結果をつかってもう一つ選択クエリを作るといいです。 サブテーブルと集計クエリを基にした選択クエリを作ります。 ID同士をつなげるのですが、つなげた後につなげた線を右クリックします。 手元にアクセスがないから、うろ覚えですが、「リンクの種類の設定」というような項目があるはずです。 そこに「メインテーブル上のすべてのレコードと、集計クエリの一致するレコードを表示する」というような意味のラジオボタンを選びます。 できあがり。 ただ、このクエリで吐き出した結果は編集したり、レコードを追加したりできません。
お礼
ご回答ありがとうございます。 集計クエリを使ってIDが最大のものを抽出して、クエリとメインテーブルの氏名コードをリンクさせ該当するもの表示というのは試してみました。 ですが、そうすると表示するまで遅くなったりして、どうしても一つのクエリの中で完結させて、作りたいです。