A(1000件)とB(500件)の2つのテーブルがあります。
この2つをキーでつなぎ、Aの全てのデータを表示し、
2つの一致したデータのみにBの●・△・■のフィールドを追加したい。
【質問1】
2つを繋ぐ完全一致のキーがありませんので
まずは電話番号で確認し、その後住所、その後名前と・・・
最終的にはこの3つの内ひとつでも一致したものにBのフィールドを
追加したいのですが、どのようにするのがベストでしょうか?
【質問2】
ABのテーブルどちらにも重複したデータが含まれている場合
2つを繋ぎ“Aの全てのレコードとBの同じ結合フィールドのレコードだけを含める”
にチェックを入れてもAの1000件を超えて表示されます。
通常、“Aの全てのレコードとBの同じ結合フィールドのレコードだけ”なので
表示されるレコードは1000件ですよね?
重複データを削除する以外に1000件で表示する方法はないのでしょうか?
よろしくお願い致します。
No.2ベストアンサー
- 回答日時:
クエリでテーブルを更新するのは難しい
のでは。
(1)
質問の●・△・■ を順番に、
F1、F2、F3とします。
もし、●・△・■ が一つの
フィールドならば少しコードを
変える必要があります。
以下のSQL文でクエリを作ります。
新しいクエリをSQLビューにして、
以下のSQL文をコピーし貼り付け、
保存します。名前を「クエリ差分」とします。
SELECT A.電話番号, B.F1, B.F2, B.F3
FROM A, B
WHERE (((A.電話番号)=[B].[電話番号])) OR (((A.住所)=[B].[住所])) OR (((A.名前)=[B].[名前]));
次に、フォームにボタンを一つ設定し、
名前を「cmd抽出」とします。
ボタン「cmd抽出」の上で右クリックして
プロパティシートを開き、その中の「クリック時」
のところで右端をクリックして、「ビルダの選択」
というフォームを表示し、その中の「コードビルダ」
を選択して、「OK」のボタンを押します。
コード表が開かれるので、表示されたコードを
以下のように設定します。
DAOを使っているので、コード表のツールから
参照設定を選択して、
Microsoft DAO xx Object Library
にチェックを入れて、OKとします。xxは3.6のような数字です。
このとき、
Microsoft ActiveX Data Objects xx Library
にチェックが入っていたらはずしてください。
Private Sub cmd抽出_Click()
Dim db As Database
Dim rs1 As Recordset
Dim rs2 As Recordset
Set db = CurrentDb
Set rs1 = db.OpenRecordset("A", dbOpenDynaset)
Set rs2 = db.OpenRecordset("クエリ差分")
If rs2.RecordCount > 0 Then
rs2.MoveFirst
Do Until rs2.EOF
Do Until rs1.EOF
If rs2!電話番号 = rs1!電話番号 Then
rs1.Edit
rs1!F1 = rs2!F1
rs1!F2 = rs2!F2
rs1!F3 = rs2!F3
rs1.Update
Exit Do
End If
rs1.MoveNext
Loop
rs2.MoveNext
Loop
End If
rs1.Close: Set rs1 = Nothing
rs2.Close: Set rs2 = Nothing
db.Close: Set db = Nothing
End Sub
(2)
クエリのデザインビューで結合線の矢印がAからBに
向かっていますか。
フィールドには何を表示する設定になっていますか。
そのとき、表示するフィールドのテーブルは何を
指定していますか。
SQL文だと、
SELECT A.電話番号
FROM A LEFT JOIN B ON A.電話番号 = B.電話番号;
のようになっていますか。
この回答への補足
ご回答ありがとうございます。
今回、テーブルを更新するのではなく、表示のみでよかったので、
piroin654様よりお教えいただきました、差分クエリとAテーブルをつなぎ
目的のA+F1・F2・F3を表示する事ができました。
言葉が足りなかったようで大変お手数をお掛けしました。
(2)
>クエリのデザインビューで結合線の矢印がAからBに向かっていますか。
向かっています。
>フィールドには何を表示する設定になっていますか。
Aの全てとBのF1・F2・F3です。
>そのとき、表示するフィールドのテーブルは何を指定していますか。
Aの全てとBのF1・F2・F3です。
>SQL文だと、
>SELECT A.電話番号
>FROM A LEFT JOIN B ON A.電話番号 = B.電話番号;
このようになっています。↓
SELECT
FROM A LEFT JOIN B ON A.電話番号 = B.電話番号;
Bテーブルに重複がある限り仕方がないのですね。
ありがとうございました。
No.1
- 回答日時:
【質問1】
BのファイルをAに対してキーの数だけ結合します。
A-B1,B2,B3
A-B1の条件:B1!電話番号=A!電話番号
A-B2の条件:B2!住所=A!住所
A-B3の条件:B3!名前=A!名前
●1:SWITCH(B1!電話番号=A!電話番号,B1!●,B2!住所=A!住所,B2!●,B3!名前=A!名前,B3!●,True,Null)
【質問2】
>表示されるレコードは1000件ですよね?
Bに同じキーが重複するとひとつのAレコードに複数の結合になる為、1000件を超えます。
集計のグループ化でAのキー(電話番号,住所,名前)をグループ化して
B側の表示する内容を先頭か最後にしてください。
この回答への補足
ご回答ありがとうございます。
すみません、なにせ初心者の為、回答を理解出来ません。
申し訳ありませんが、細かくお教え願いませんでしょうか?
【質問1】
AB間を3本の結合線で結ぶ。
その後のAーB1・AーB2・AーB3とは列を追加するのですか?
SWITCH関数はどこに入力するのですか?
SWITCHの●はBの追加するフィールドの事ですか?
【質問2】
集計のグループ化でAのキー(電話番号,住所,名前)をグループ化して・・・
Aテーブルには名前は同じでも備考の内容が異なっていたり、
グループ化できないフィールドがいくつかございます。
色々すみませんがよろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[Access]クエリの抽出条件について
-
ACCESS2000について
-
ACCESS97のフォームについて
-
Accessでフォームへのフィール...
-
NULL値を含む場合のフィルタ
-
Access2000 2番目に大きい数値...
-
テーブルに主キーを作らないデ...
-
Accessのフォーム上にレコード...
-
ACCESSのフォームからデータの...
-
選択したチェックボックスのみ...
-
Access 別フォームへの再クエ...
-
ACCESS クエリで重複データを最...
-
ACCESS クエリで、グループ化...
-
access・カウント結果がゼロで...
-
ACCESS のクエリー実行に異常に...
-
アクセス 0以外をカウントす...
-
Accessを使って日付を比較したい
-
accessのレポートであとから他...
-
他フォームのチェックボックス...
-
Accessのフォームに表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
NULL値を含む場合のフィルタ
-
access で「指定したフィール...
-
Accessでグループ化した結果フ...
-
アクセスで前年対比を出す方法...
-
Accessのクエリで、Left関数を...
-
Accessでフォームへのフィール...
-
Access2000 2番目に大きい数値...
-
別のテーブルのフィールドを抽...
-
ファイルメーカーで名前のよみ...
-
アクセス 抽出条件AかつBの...
-
ファイルメーカーで住所内の市...
-
LotusNotesで全角の空白を半角...
-
[Access]クエリの抽出条件について
-
Access・エラー
-
アクセスのフィールドデータを...
-
【至急】Mp3tagで歌手情報を追...
-
宛名作成(Word)の郵便番号が...
-
[Microsoft Access]クエリ作成...
-
【access】テキストから日付へ...
-
Access 都道府県名を抽出したい
おすすめ情報