Access VBA質問箱 IV

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

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


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

【4034】マージ処理 はじめちゃん 04/12/16(木) 0:07 質問[未読]
【4035】Re:マージ処理 Gin_II 04/12/16(木) 0:17 回答[未読]
【4036】Re:マージ処理 はじめちゃん 04/12/16(木) 6:29 質問[未読]
【4037】Re:マージ処理 Gin_II 04/12/16(木) 9:28 回答[未読]
【4038】Re:マージ処理 はじめちゃん 04/12/17(金) 6:46 質問[未読]
【4039】Re:マージ処理 hatena 04/12/17(金) 9:17 回答[未読]
【4043】Re:マージ処理 はじめちゃん 04/12/18(土) 10:46 お礼[未読]

【4034】マージ処理
質問  はじめちゃん  - 04/12/16(木) 0:07 -

引用なし
パスワード
   ACCESSで3つのテーブルを主キーでマージして1つのテーブルにしたいのですが
VBAマクロでどのように書けばいいでしょうか?

主キーは社員番号なのですが、Aテーブルは経理課、Bテーブルは人事課、Cテーブルは
総務課で、1つのテーブルにマージして全社員テーブルを作りたいのです。

【4035】Re:マージ処理
回答  Gin_II  - 04/12/16(木) 0:17 -

引用なし
パスワード
   >主キーは社員番号なのですが、Aテーブルは経理課、Bテーブルは人事課、Cテーブルは
>総務課で、1つのテーブルにマージして全社員テーブルを作りたいのです。

ユニオンクエリかな。

SELECT "経理課" AS 所属, 社員番号, 氏名 FROM Aテーブル
UNION
SELECT "人事課", 社員番号, 氏名 FROM Bテーブル
UNION
SELECT "総務課", 社員番号, 氏名 FROM Cテーブル

このようなクエリを元に、追加クエリを作成すれば大丈夫だと思います。

【4036】Re:マージ処理
質問  はじめちゃん  - 04/12/16(木) 6:29 -

引用なし
パスワード
   ▼Gin_II さん:
えーと、もう一度質問内容を変えていいます。
通常、2テーブル間の結合をクエリー→デザインビュー→結合のプロパティ
でやろうとすると3通りの結合方法しか出てきません。
【Aテーブル】
社員番号  名前
1     山田太郎
2     佐藤花子
3     吉田剛史

【Bテーブル】
社員番号  住所
4     東京都
5     岡山県
6     埼玉県

の場合、
【結合結果】
社員番号  名前   住所
1     山田太郎
2     佐藤花子
3     吉田剛史
4          東京都
5          岡山県
6          埼玉県

となるようにするにはどうすればいいのでしょうか?

【4037】Re:マージ処理
回答  Gin_II  - 04/12/16(木) 9:28 -

引用なし
パスワード
   >通常、2テーブル間の結合をクエリー→デザインビュー→結合のプロパティ
>でやろうとすると3通りの結合方法しか出てきません。

UNION クエリは、デザインビューでは作れません。
「表示」→「SQLビュー」で、作成してください。


SELECT 社員番号, 名前, NULL AS 住所 FROM Aテーブル
UNION ALL
SELECT 社員番号, NULL, 住所 FROM Bテーブル

で大丈夫だと思います。

【4038】Re:マージ処理
質問  はじめちゃん  - 04/12/17(金) 6:46 -

引用なし
パスワード
   データを訂正します。
教えていただいたUNIONだと、

【Aテーブル】
社員番号  名前
1     山田太郎
2     佐藤花子
3     吉田剛史

【Bテーブル】
社員番号  住所
3     東京都
4     岡山県
5     埼玉県

の場合、
【結合結果1】
社員番号  名前    住所
1     山田太郎
2     佐藤花子
3     吉田剛史  
3           東京都 
4           岡山県
5           埼玉県

となると思うのですが...

【結合結果2】
社員番号  名前    住所
1     山田太郎
2     佐藤花子
3     吉田剛史  東京都
4           岡山県
5           埼玉県

のように3の部分を同じ主キーはマージするように
にしたいというのが質問の趣旨なのですが
どういう方法を用いれば可能でしょうか?
何度も質問してごめんなさい。><

【4039】Re:マージ処理
回答  hatena  - 04/12/17(金) 9:17 -

引用なし
パスワード
   >の場合、
>【結合結果1】
>社員番号  名前    住所
>1     山田太郎
>2     佐藤花子
>3     吉田剛史  
>3           東京都 
>4           岡山県
>5           埼玉県

ここまで出来たのなら、集計クエリにして、
社員番号でグループ化すればいいですね。
名前 と 住所 は、集計を 先頭 にします。

一つのSQLで記述するなら、

SELECT T.社員番号, First(T.名前) AS 名前, First(T.住所) AS 住所
FROM
(SELECT 社員番号, 名前, NULL AS 住所 FROM Aテーブル
 UNION ALL
 SELECT 社員番号, NULL, 住所 FROM Bテーブル)
GROUP BY T.社員番号;

【4043】Re:マージ処理
お礼  はじめちゃん  - 04/12/18(土) 10:46 -

引用なし
パスワード
   ありがとうございました。

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