
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で質問しましょう!
似たような質問が見つかりました
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Access(アクセス) Accessフォーム 一部のレコードだけを抽出する方法について 1 2022/06/28 18:45
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Access(アクセス) Access クエリ 同一テーブル内 複数フィールドの同時集計のやり方について 1 2022/05/18 19:01
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessのクエリ
-
こんなエディタを探しています。
-
ファイルメーカー5.5から4...
-
インターネット上の検索フィー...
-
アクセス クエリについて2点お...
-
式の意味を教えてください
-
インターレースについて
-
Microsoft Accessでのレコード...
-
アクセス2010でフィールドから...
-
ACCESSの関数について
-
【至急】Mp3tagで歌手情報を追...
-
別のテーブルのフィールドを抽...
-
ACCESSの抽出条件
-
ロータスアプローチでの日付を...
-
ファイルメーカーで条件により...
-
並び替えているレコードの抽出方法
-
ADOでRecordsetオブジェクトを...
-
データが入っているAccessのテ...
-
Accessクエリのデータ自動表示...
-
Access処理を自動化するには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessのクエリで、Left関数を...
-
アクセスで前年対比を出す方法...
-
別のテーブルのフィールドを抽...
-
Access2000 2番目に大きい数値...
-
Accessでグループ化した結果フ...
-
Accessでフォームへのフィール...
-
【access】テキストから日付へ...
-
ファイルメーカーで名前のよみ...
-
NULL値を含む場合のフィルタ
-
ファイルメーカーで住所内の市...
-
Accessの入力について
-
[Access]クエリの抽出条件について
-
access で「指定したフィール...
-
図面の管理をしたい
-
ACCESSのフィールドに記述する...
-
筆王の宛名書き
-
LotusNotesで全角の空白を半角...
-
VBAで日付型とテキストでフィル...
-
ファイルメーカーのチェックボ...
-
Access_vbaフィルタ機能
おすすめ情報