※ ChatGPTを利用し、要約された質問です(原文:【Access】2つのクエリを1つにまとめる方法)
【Access】2つのクエリを1つにまとめる方法
2011/04/01 00:12
このQ&Aのポイント
テーブルT_Subのmain_idフィールドの最大値のレコードを取得し、T_Mainのidフィールドに存在するもののみを表示するために、2つのクエリを作成しました。
今回は、2つのクエリを1つにまとめる方法を教えていただきたいです。最終的には、Visual Basic上に移植する予定です。
また、2つのSQL文がある場合でも、クエリを使用せずに、Visual Basic上の記述のみで動作する方法があれば、それも教えていただきたいです。
下記のT_Subテーブルでmain_idフィールド毎のdayフィールドの最大値のレコードを取得し、
取得したレコードの中でT_Mainのidフィールドに存在するもののみを表示したいと思い、
下記のQ_T_Sub_SelectクエリとQ_Ansクエリを作成し、
Q_Ansクエリを実行する事で意図した動作になったと思います。
その後、この2つのクエリを1つのクエリにまとめようと思ったのですが、
どのように記述すれば良いか分からなかった為、アドバイスいただける方がいらっしゃいましたら、
ご教示の程よろしくお願いします。
【Q_T_Sub_Selectクエリ】
SELECT T_Sub.*
FROM T_Sub
WHERE (((T_Sub.id)=(SELECT TOP 1 id
FROM T_Sub Q
WHERE Q.main_id = T_Sub.main_id
ORDER BY day DESC, id DESC
)));
【Q_Ansクエリ】
SELECT T_Main.id, T_Main.field1, Q_T_Sub_Select.id, Q_T_Sub_Select.day, Q_T_Sub_Select.field2
FROM T_Main LEFT JOIN Q_T_Sub_Select ON T_Main.id = Q_T_Sub_Select.main_id;
【Q_Ansクエリの実行結果】
T_Main.id|field1|Q_T_Sub_Select.id|day|field2
1|A|2| |2000
3|C|6|2011/03/10|200
【テーブル(T_Main)】
id|field1
1|A
3|C
【テーブル(T_Sub)】
id|main_id|day|field2
1|1| |100
2|1| |2000
3|2|2011/03/04|400
4|2|2011/03/03|500
5|3|2011/03/10|300
6|3|2011/03/10|200
なお、1つのクエリにまとめたい理由ですが、最終的にはクエリではなく、
Visual Basic上に記述を移植したいと思っているためです。
ちなみに、1つのクエリをVisual Basic上に移植して
SQLの実行結果を利用するイメージは何となく分かるため、
2つのクエリを1つにまとめる方法を希望しましたが、
2つのSQL文があってもクエリなどを使用せず、
Visual Basic上への記述のみで動作する方法があれば、そのような方法でも大丈夫です。
以上、よろしくお願いします。
質問の原文を閉じる
質問の原文を表示する
お礼
ご回答ありがとうございます。 ご教示いただいたSQLを試したところ、意図した動作となりました。 このたびはどうもありがとうございました。 それと前回は質問内容に漏れがあり申し訳ありませんでした。 以上、よろしくお願いします。