Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2225 / 2272 ツリー ←次へ | 前へ→

【3365】条件クエリの作成について Tomato 04/8/30(月) 17:30 質問[未読]
【3366】Re:条件クエリの作成について こもれび 04/8/30(月) 18:27 回答[未読]
【3367】Re:条件クエリの作成について クロ 04/8/30(月) 18:47 回答[未読]
【3368】Re:条件クエリの作成について Tomato 04/8/30(月) 19:16 お礼[未読]

【3365】条件クエリの作成について
質問  Tomato  - 04/8/30(月) 17:30 -

引用なし
パスワード
   テーブル(TableA)とクエリ(QueryB)より新規クエリを作成したいです。

テーブル、クエリの構成は以下のようになっています。
 TableA --- ID(重複あり), Date, Item, Item2
 QueryB --- ID(単一), Date, Item3

作成したいクエリは、TableAから
1.QueryBと同じID
2.TableAのDateがQueryBのDateよりも古い(小さい)ものの中で一番新しい(大きい)
という条件です。

ひとつのクエリでこれを満たすクエリを作成することは可能なのでしょうか?

SELECT TableA.*
FROM TableA, QueryB
WHERE ((TableA.ID=QueryB.ID) AND (TableA.Date)=(SELECT Max(Date)
    FROM TableA as TA WHERE (TableA.ID=TA.ID)));

上のSQLでは条件2のQueryBのDateよりも古い(小さい)が当てはまりません。

何かいい方法がありましたら教えてください。お願いします。

【3366】Re:条件クエリの作成について
回答  こもれび  - 04/8/30(月) 18:27 -

引用なし
パスワード
   こもれびです

SELECT TableA.*
FROM TableA, QueryB
WHERE (((TableA.ID)=[QueryB].[ID]) AND ((TableA.Date)=(SELECT Max(Date)
    FROM TableA WHERE (TableA.Date<QueryB.Date))));

ではいかが?

【3367】Re:条件クエリの作成について
回答  クロ  - 04/8/30(月) 18:47 -

引用なし
パスワード
   SELECT TableA.ID, Min(TableA.日付) AS 日付の最小, TableA.Item, TableA.Item2
FROM QueryB LEFT JOIN TableA ON QueryB.ID = TableA.ID
GROUP BY TableA.ID, TableA.Item, TableA.Item2;
でもいいんでは?

※Dateは日付としてあります。

【3368】Re:条件クエリの作成について
お礼  Tomato  - 04/8/30(月) 19:16 -

引用なし
パスワード
   教えて頂いたとおり試してみたところ、欲しい値を得ることができました。
"FROM TableA as TA WHERE (TableA.ID=TA.ID)"は特に必要はないのですね。
勉強になりました。どうもありがとうございました。

2225 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078325
(SS)C-BOARD v3.8 is Free