![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
2つのテーブルAとBをマージして新しいテーブルCを作成したいのです。マージするときは、最新の売上日フィールドをもつレコードを取得します。環境はAccess2000です。どんなSQL文を作成すればいいのでしょうか?
また、テーブルAにしかないレコード、又はテーブルBにしかないレコードは、そのままテーブルCに追加したいです。
※下記テーブルAとBは、Access内に存在します。テーブルCはAとBのマージ後の結果作成されるテーブルです。
テーブルA
顧客番号 売上日 商品名 備考
1 2000-01-01 ふでばこ A
2 2000-02-02 鉛筆 A
3 2000-03-03 定規 A
4 2000-04-04 シャーペン A
99 2000-09-09 パソコン A
テーブルB
顧客番号 売上日 商品名 備考
4 2001-04-04 シャーペン B
2 2000-02-02 鉛筆 B
3 2001-03-03 定規 B
1 1999-01-01 ふでばこ B
100 2005-11-11 ワープロ B
テーブルAとBを、最新の売上日の条件でレコードを取得し新しいテーブルCを作成する。
テーブルC
顧客番号 売上日 商品名 備考
1 2000-01-01 ふでばこ A
2 2000-02-02 鉛筆 A
3 2001-03-03 定規 B
4 2000-04-04 シャーペン A
99 2000-09-09 パソコン A
100 2005-11-11 ワープロ B
SQL文で処理可能なのでしょうか?
No.3ベストアンサー
- 回答日時:
サブクエリでネストしても出来ない処理があるのでクエリを分けた方が簡単ですよ。
単純にするなら3つ
'qry1として
SELECT テーブルA.顧客番号, テーブルA.売上日, テーブルA.商品名, テーブルA.備考
FROM テーブルA
UNION SELECT テーブルB.顧客番号, テーブルB.売上日, テーブルB.商品名, テーブルB.備考
FROM テーブルB;
'qry2として
SELECT qry1.顧客番号, Max(qry1.売上日) AS 売上日の最大, qry1.商品名
FROM qry1
GROUP BY qry1.顧客番号, qry1.商品名;
'qry3として
'テーブルCを作成するなら
SELECT qry2.顧客番号, qry2.売上日の最大 AS 売上日, qry2.商品名, qry1.備考 INTO テーブルC
FROM qry2 INNER JOIN qry1 ON (qry2.売上日の最大 = qry1.売上日) AND (qry2.顧客番号 = qry1.顧客番号)
GROUP BY qry2.顧客番号, qry2.売上日の最大, qry2.商品名, qry1.備考;
'既存のテーブルCに追加するならこちらで
INSERT INTO テーブルC ( 顧客番号, 売上日, 商品名, 備考 )
SELECT qry2.顧客番号, qry2.売上日の最大, qry2.商品名, qry1.備考
FROM qry2 INNER JOIN qry1 ON (qry2.売上日の最大 = qry1.売上日) AND (qry2.顧客番号 = qry1.顧客番号)
GROUP BY qry2.顧客番号, qry2.売上日の最大, qry2.商品名, qry1.備考;
サブクエリで処理できるところもありますがその辺はご自分でネストしてみてください。
No.2
- 回答日時:
>UNION句はかなりのヒントになりました。
しかし上記をAccessで実行すると。「 1 2010/04/04 シャーペン A 」の1件のレコードしか取得できませんでした。^^;)すみません言葉足らずでした。
商品名でグループ化する必要があるので、
最新の売上日取得クエリの商品名の列に「集計」という欄がありますが、これを「グループ化」にして下さい。
この回答への補足
ありがとうございます。しかし、商品名でグループ化しても、その隣のフィールドの「備考」が最小の値である「MIN(備考)」で処理すると、次のような場合矛盾が生じます。テーブルBから最新売上日のレコードをとる時、顧客番号と売上日はテーブルBからとり、備考は、テーブルAからとるという矛盾です。あくまでも、テーブルBから最新のレコードをとった場合、「備考」フィールドもテーブルBからとりたいのです。ご丁寧にありがとうございます。^^
補足日時:2005/11/08 01:06No.1
- 回答日時:
ユニオンクエリを作成してテーブルAとBを結合し、その結果を基に売上日の最大で取得するクエリにすると良いです。
ユニオンクエリ:
SELECT * FROM テーブルA UNION SELECT * FROM テーブルB
最新の売上日取得クエリ:
SELECT MIN(顧客番号),MAX(売上日),MIN(商品名),MIN(備考) FROM (上記のユニオンクエリ)
この「最新の売上日取得クエリ」を元にするテーブルCのテーブル作成クエリを作れば良いでしょう。
この回答への補足
UNION句はかなりのヒントになりました。しかし上記をAccessで実行すると。「 1 2010/04/04 シャーペン A 」の1件のレコードしか取得できませんでした。^^;)とりあえず色々やってみます。いい方法がありましたら教えてください。ありがとうございます。
補足日時:2005/11/08 00:37お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Oracle sqlで質問です。 Aテーブルの登録番号をキーにBテーブルから確認番号を取得したいのですが、Bテーブ 4 2023/05/18 13:08
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- Oracle sqlのupdate文で質問です。 テーブルBの番号をキーにテーブルAの身長をテーブルBの身長に更新 2 2022/11/02 15:15
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
Accessクエリーで両方のテーブルの全てのデータを表示することは可能ですか?
Access(アクセス)
-
Access テキスト型に対する指定桁での0埋め方法
その他(データベース)
-
TextBoxコントロールを引数として渡すには?
その他(教育・科学・学問)
-
-
4
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
5
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
6
Accessでテーブルの値をテキストボックスに代入するには?
Access(アクセス)
-
7
AccessVBAで作成したExcelファイルを削除する方法は?
Visual Basic(VBA)
-
8
アクセスからエクセルのシートを追加して、名前をつける方法
Excel(エクセル)
-
9
Accessのフィールド名に半角括弧を使ってしまった
Visual Basic(VBA)
-
10
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
11
アクセスで複数のレコード情報を1レコードにまとめる方法
Access(アクセス)
-
12
Accessのクエリで2つのフィールドが同条件の場合に結合したい
その他(Microsoft Office)
-
13
複数のレコードを1つのレコードにまとめる方法
Access(アクセス)
-
14
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
15
Accessのリンク先を相対パスにしたい
その他(データベース)
-
16
YES/NO型の値
Excel(エクセル)
-
17
アクセスvbaでエクセルブックを保存
その他(Microsoft Office)
-
18
Accessレポートのチェックボックスを大きくする方法
Access(アクセス)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessでテーブル名やクエリ名...
-
3つの表を1つに縦に連結する
-
時間の足し算
-
INSERT時にデータ登録とmaxの発...
-
ACCESSに同時アクセス(編集)を...
-
Accessレコードの追加や変更が...
-
Accessクエリでの、LIKE条件
-
採点のDBを作りたい
-
SQLで日付を条件に削除したい
-
デザインビューで、連結式 を...
-
フォームの計算がテーブルに反...
-
ツリー構造をRDBで表現するには?
-
Accessの追加クエリで既存のテ...
-
2つのテーブルを比較して一致し...
-
accessのマクロでODBC接続で外...
-
access テーブル内のレコード...
-
ファイルメーカ 検索実行せず...
-
SQLで条件指定結合をしたいがNU...
-
Accessでテーブルにパスワード...
-
データ型の変更
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでテーブル名やクエリ名...
-
ACCESSに同時アクセス(編集)を...
-
Accessクエリでの、LIKE条件
-
Accessでテーブルからテーブル...
-
access テーブル内のレコード...
-
デザインビューで、連結式 を...
-
2つのテーブルを比較して一致し...
-
3つの表を1つに縦に連結する
-
ACCESSで指定されたテーブルか...
-
Accessレコードの追加や変更が...
-
Accessの追加クエリで既存のテ...
-
Accessでvlookupみたいなことは...
-
SQLで条件指定結合をしたいがNU...
-
ツリー構造をRDBで表現するには?
-
SQLで日付を条件に削除したい
-
リンクテーブルを CopyObject ...
-
Accessのサブフォームで#Name...
-
時間の足し算
-
INSERT時にデータ登録とmaxの発...
-
SQL: SELECT UNIONすると文字数...
おすすめ情報