人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Microsoft Access2000について質問です。
下のようなテーブルがあります。

商品 登録日 状態
A111 2006/10/01 01
A111 2006/05/01 10
A111 2006/10/20 03
B111 2006/09/30 05
B111 2006/04/01 12
C111 2006/10/01 00


同じ商品コードがいくつか登録されていますが、この中から
登録日がもっとも最新の商品のレコードのみを抽出したいのです。

商品 登録日 状態
A111 2006/10/20 03
B111 2006/09/30 05
C111 2006/10/01 00


この抽出方法を教えていただけないでしょうか。
よろしくお願いします。

●質問者: db_Magician
●カテゴリ:コンピュータ
✍キーワード:00 2006 Microsoft コード レコード
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● mikkun24
●1ポイント

SELECT テーブル1.商品, Max(テーブル1.登録日) AS 登録日の最大,テーブル1.状態

FROM テーブル1

GROUP BY テーブル1.商品;

テーブル名は適宜直してください。

◎質問者からの返答

回答ありがとうございます。

ですが、この式はエラーになりますよね。

状態フィールドを表示できませんので…。


2 ● りくっち
●30ポイント

状態フィールドが不要であれば、商品フィールドをグループ化、登録日を最大値でグループ化したクエリーで算出できます。


元テーブルをTable_1とするとSQL文はこんな感じです。


SELECT Table_1.商品, Max(Table_1.登録日) AS 登録日の最大

FROM Table_1

GROUP BY Table_1.商品;


これに状態フィールドを結びつける必要があるので、

↑のクエリーを元に商品フィールドと登録日フィールドの最大値の両方をキーにして、

元テーブルからデータを抽出するクエリーを作成します。

↑のクエリーをQ_1として、


SELECT Table_1.商品, Table_1.登録日, Table_1.状態

FROM Table_1 INNER JOIN Q_1 ON (Table_1.登録日 = Q_1.登録日の最大) AND (Table_1.商品 = Q_1.商品);


というSQL文でご希望のデータが表示されると思います。


尚、↑のSQLはクエリー作成画面で「表示」→「SQLビュー」にして、

貼り付ければOKです。

(テーブル名、クエリー名は随時変更してください)


また、元テーブルに商品、登録日、状態の全てが同じレコードが存在した場合は、重複して表示されますのでご注意ください。


以上ご参考まで。

◎質問者からの返答

回答ありがとうございます。

内部結合で、2段階のクエリで抽出するのですね。


3 ● AketiJyuuzou
●30ポイント ベストアンサー

access2000で動かなかったらごめんなさい

select 商品,登録日,状態

from テーブル a

where 登録日 = (select max(b.登録日) from テーブル b

where b.商品 = a.商品);

◎質問者からの返答

回答ありがとうございます。

問題なく動きました。

とてもシンプルな式ですね…


4 ● きゃづみぃ
●30ポイント

テーブルは「テーブル2」という名称にしてあります。

それで クエリで 新規デザインビューにして デザイン状態にして テーブルの追加を 閉じてから 表示、SQLビューで 以下の SQLを コピペすればOKです。


SELECT テーブル2.商品,テーブル2.登録日 as 登録日の最大, テーブル2.状態

FROM テーブル2

,(SELECT テーブル2.商品 as a, Max(テーブル2.登録日) AS b

FROM テーブル2

GROUP BY テーブル2.商品) as c

where

テーブル2.商品 = c.a and

テーブル2.登録日 = c.b

◎質問者からの返答

回答ありがとうございます。

問題なく抽出できました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ