さきほどアクセスの質問をした者です。IDがマッチしなかったデータが消されてしまっているようなのですが、消さずに残したい場合はどうしたらよいのでしょうか。元の質問はhttp://www.hatena.ne.jp/1081502965です。今回は追加のポイント無しでお願いできれば助かりますが・・。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/04/09 19:10:17
  • 終了:--

回答(7件)

id:kuippa No.1

くいっぱ回答回数1030ベストアンサー獲得回数132004/04/12 11:24:44

ポイント10pt

http://d.hatena.ne.jp/kuippa/

紅茶屋くいっぱのあれこれ日記

掲題URLはダミーです。

前回の質問をチラッとみました。

次のやり方ですくなくとも、実装することができます。アクセス…、書式に不安を覚えたので一応テーブルつくって確認してみました。

正直、速度性能が出るようなSQL文ではありません。段階踏んでもよいのであれば、先にTBL1にカラムを増やしてから、TBL2の内容をマージ(Update)、TBL2にしか存在しないIDをTBL1にインサート。

ってな感じにやってみてはいかがでしょうか。

select

tb1.id,

tb1.cola,

tb1.colb,

tb2.colc

from

tbl1 tb1

left outer join tbl2 tb2

on tb1.id = tb2.id

union

select

tb2.id,

null,

null,

tb2.colc

from

tbl2 tb2

where

tb2.id not

in (select distinct(tb1.id) from tbl1 tb1 )

id:setoro No.2

setoro回答回数6ベストアンサー獲得回数02004/04/09 20:04:21

ポイント16pt

http://www.hatena.ne.jp/1081505417#

さきほどアクセスの質問をした者です。IDがマッチしなかったデータが消されてしまっているようなのですが、消さずに残したい場合はどうしたらよいのでしょうか。元の質問.. - 人力検索はてな

クエリ画面で2つのテーブルを結んでいる線を

右クリックし、結合プロパティを選択したらいいと思いますよ。

しかし、フルアウタージョインは出来なそうですけど・・・。

フルアウタージョインがご希望でしたら申し訳ありません。

id:karen_maria No.3

みきまま回答回数104ベストアンサー獲得回数02004/04/09 20:29:40

ポイント16pt

http://himagine.s20.xrea.com/access/fulljoin.html

Microsoft Accessで全外部結合をシミュレートする方法

ここのサイトの2を見て下さい。

ユニオンクエリーというものを作ります。

テーブルに対してクエリーをそれぞれ作って、最後に選択クエリーを作れば希望のデータができあがると思います。やってみて下さい。

先ほどのポイントがもらいすぎなので、ポイント結構です^^;

id:daffy No.4

daffy回答回数9ベストアンサー獲得回数12004/04/09 22:04:05

ポイント16pt

普通のjoin(前の質問の回答3の方法)では条件に一致するものしかクエリ結果に出てきません。

前の質問に対する回答の1の方法を工夫すればできるはずです。

上記のURLの「(3)Accessで外部結合をする」に具体的な方法が載っていますが、完全な回答ではありません。

参考にして工夫してみてください。

id:Ktwo No.5

Ktwo回答回数21ベストアンサー獲得回数52004/04/10 02:42:32

ポイント16pt

①現在の2つテーブルとは別に、3つ目のテーブルを新規作成します。

(項目は、ID,項目A,項目B,項目Cとし、IDをKEYとします。)

②追加クエリーその1

項目A,Bを持つテーブルから、IDのみを、新規テーブルに追加します。

③追加クエリーその2

項目Cを持つテーブルから、同じくIDのみを、新規テーブルに追加します。

(この際、キー重複のエラー表示がありますが、意図してやっていますので、

無視して、OKです。)

↑この段階で、新規テーブルには、IDが全件含まれることになります。

更新クエリーその1

④新規テーブルと、項目A,Bを持つテーブルを、IDで結び、

新規テーブルの項目A,Bを更新します。

更新クエリーその2

⑤新規テーブルと、項目Cを持つテーブルを、IDで結び、

新規テーブルの項目Cを更新します。

以上で完成です。

前提条件としまして、元の2つのテーブルのIDがKEYに

なっていることを確認して下さい。

上記の方法は、元テーブルの数が複数の場合に利用できると思います。

id:SHIGEPON No.6

SHIGEPON回答回数15ベストアンサー獲得回数02004/04/12 01:37:27

ポイント16pt

http://www.hatena.ne.jp/1081502965

Access(解決の糸口となった回答先着一件に500ポイント差し上げます)でIDをキーとして2つのテーブルをマージしたいのですがやり方をどなたか教えてください。.. - 人力検索はてな

えーとここまでの回答で解決されてないのですよね?

コメントがないのでどこら辺が判らないのかが不明ですので、くどいかもしれませんが細かく説明します。

まずクエリーを新規作成しますが、テーブルの表示で一つも選ばずに「閉じる」と、画面左上(ツールバー)に「SQL」と表示されるのでクリックしてください。

「SELECT;」

と表示された画面になると思います。ここに

SELECT ID FROM テーブル1の名前

UNION

SELECT ID FROM テーブル2の名前

;

と入力してください。

(「テーブル1の名前」などは表示したいテーブル名を代入してください。)

これでユニオンクエリが出来ます。これを開くと2つのテーブルの全IDが表示されると思います。(両方にあって重複するIDでも1つしかでない筈です)

次ぎにもう1度クエリの新規作成をし、上述のユニオンクエリと2つのテーブルを選びます。そしてユニオンクエリのIDと2つのテーブルのIDをそれぞれ結び、ユニオンクエリ側を「1」にして2つのテーブルを「∞」にするとお望みのクエリになる筈です。

id:kamino2

解答が遅くなりすみません。左外部結合や全外部結合という言葉を知らなかったので苦戦していましたが、そのキーワードでいろいろと調べてみたらやりたいことがすべてできました。ご協力誠にありがとうございました。最近はアクセスのオンラインヘルプも結構良くできているということも分かって質問の内容以外にも勉強になりました。ありがとうございます。

2004/04/12 23:22:10

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 sakichin 152 140 0 2004-04-12 13:12:43

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません