顧客情報の入ったテーブルにメイン担当者IDとサブ担当者IDがあり、別テーブルの社員情報から
社員名などを引っ張ってくるクエリを組んでいます。
現在は、メイン担当者名とサブ担当者名を持ってくる為に社員情報を2回追加して、それぞれで
両方にある担当者IDをキーにして結合させているのですが、テーブル1回の追加でメインとサブ両担当者の社員名を持ってくる方法はあるのでしょうか?
まだ、ACCESSを勉強中のため色々と調べてみましたが知識不足のためか出来る出来ないの判断も出来ませんでした。
出来ないなら諦めがつくのですが、もし1回の追加で済むならその方がシンプルで良いと思うのでもし方法があるようでしたら教えていただければと思います。
No.2ベストアンサー
- 回答日時:
【要旨】
『顧客情報』テーブルの『メイン担当者ID』と『サブ担当者ID』に相当する担当者名を、
1つしか追加していない『社員情報』テーブルとの「結合線」によって同時に表示させることは、
残念ながらできません。
【詳細】
> テーブル1回の追加でメインとサブ両担当者の社員名を持ってくる方法はあるのでしょうか?
『メイン担当者ID-担当者ID』と『サブ担当者ID-担当者ID』の2つの結合線を作成すると、
それは「メイン担当者ID=担当者ID」と「サブ担当者ID=担当者ID」を同時に満たすレコード、
つまり「メイン担当者=サブ担当者」(兼任というか単独担当)を抽出することになります。
(大雑把に言ってしまえばAnd検索に相当する、と)
ですので、現状のテーブル構成では、prius770cさんが既に行っているように、面倒でも
『担当者』テーブルは2回追加するのが、一般的(かつ結果表示も速い)です。
【その他の対応案】
◆A案・『顧客情報』テーブルで担当者名を表示
『社員情報』テーブルのレコード数が多かったりすると、上記の方法よりも動作がもたついて
しまいますが(汗)、『メイン担当者ID』と『サブ担当者ID』にコンボボックスを使用すると、
クエリなしでも対応できます。
『顧客情報』テーブルをデザインビューで開いて『メイン担当者ID』の行を選択したら、
『データ型』のコンボボックスの一番下にある「ルックアップウィザード」を指定して下さい。
後は、ウィザードに従って操作を行うことで、『社員情報』の担当者名を表示させるように
することができます。
(『サブ担当者ID』についても、同様の操作を繰り返します)
※上記ウィザードを実行する代わりに、テーブルのデザインビューの左下の『ルックアップ』
タブで『表示コントロール』を「コンボボックス」にし、『値集合ソース』などを設定しても
Okです。
(なお、ウィザードを使用した場合は、リレーションシップも自動で設定されます)
なお、テーブルでこの設定を行うと、以降、同テーブルを元にしたフォームでフィールドリスト
からのドラッグ&ドロップで『メイン担当者ID』を追加すれば、自動的にコンボボックスでの
表示になります。
また、テーブルではあくまでIDの数値を表示したいという場合は、同テーブル1個だけを
追加したクエリで、『メイン担当者ID』のプロパティシートの『ルックアップ』タブで、同様の
設定を行えばOkです(残念ながらウィザードはないので手動になりますが)。
(クエリ上でIDと担当者名の双方を表示したい場合は、コンボボックスでの表示を設定
した側の『フィールド名』欄を、「メイン担当者ID」から「メイン担当名: メイン担当者ID」
と、「フィールド名として表示したい名前」+「半角コロン(:)」を追加してやります)
◆B案・担当者情報の記録方法を変える
※こちらの方法は、実際にはテーブル構成の全面改修になってしまいます。
あくまで、今後の参考情報ということで概略だけ・・・(汗)
顧客に対して複数の担当者が置かれる場合は、「顧客情報」部分と「担当者情報」
部分を別テーブルとして、1対多の関係にした方が、他のテーブルとの連携が簡単に
なりますし(→メイン/サブの担当者に対して、1つの『社員情報』テーブルの追加で対応
可能)、担当者の数が3人、4人・・・と増えても、『担当者情報』テーブルへのレコード
追加だけで対応できます。
(「担当者が5人になったから『社員情報』テーブルを5個追加しないと・・・」なんてことに
ならないで済む、と)
※この場合、単純な選択クエリだと、「1つの顧客のレコード数=その顧客の担当者の人数」
になります。
(「1顧客1行」にする場合は、クロス集計クエリを使用することになります:
但し、この形での編集は不可、表示専用になります)
回答と対策案ありがとうございます。
基本的な自分の考え方が誤っていないくてホッとしました。
対策案の二つ目は確かに出来そうなのですが、残念ながら顧客情報テーブルの定義は決まって
しまっています。(既存システムのテーブルをリンクしているため)
でも、勉強になりましたありがとうございます。
No.1
- 回答日時:
社員情報のテーブルには社員IDと社員氏名があるものとします。
社員情報のテーブルをコピーして二つにします。仮にE,Fと呼びます。Fのテーブルの社員IDの項目名を「サブ社員ID」と変えて、E,Fは別のテーブルのように見せかけておきます。そこで三つのテーブルの間でリレーションを組みます。メインテーブルを、仮にDと呼びます。Dのメイン担当社員IDとEのテーブルの社員IDの間に結合線、もうひとつはDのサブ担当社員IDとFのサブ社員IDの間に結合線を引きます。そこで三つのテーブルを入れたクエリーをつくり、クエリーを実行します。不要な項目は非表示にしたり、並べる順序は自由に変えられます。このことはすでにご存知と思います。これで一度に目的の表がつくれます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- その他(セキュリティ) これは個人情報取扱に違反していますか? 5 2022/11/15 22:02
- 中途・キャリア 入社前に提示してもらった雇用条件と入社してから頂いた雇用条件、契約書の内容が違うことってありますか。 3 2022/11/01 00:27
- SQL Server ACCESSで3ファイルを結合して、表を作成するやり方を教えて下さい。 17 2022/08/15 20:34
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- Access(アクセス) ACSESS初心者です マンション管理をACCESSで出来ないかとチャレンジしています。 リレーショ 3 2022/10/08 11:45
- Visual Basic(VBA) エクセルについて教えてください。 3 2023/06/28 09:11
- その他(データベース) accessについて 2 2022/05/31 16:58
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- SQL Server ACCESSで複数テーブルを結合して、リストを作る方法を教えてください。 2 2022/08/12 19:32
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
Access2003 クエリで、空の列は作れますか?
Access(アクセス)
-
Accessでデータシートに同じデータがいくつもでてしまいます。
その他(データベース)
-
-
4
選択クエリで空欄のテーブルがあっても表示したい
Access(アクセス)
-
5
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
6
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
7
accessで、2テーブル間で複数のリレーションをしたい
Access(アクセス)
-
8
Accessで、1つの項目に複数の置換えを1度でするには?
Access(アクセス)
-
9
クエリ上でフィールド名が2つあるときの見分け方
Access(アクセス)
-
10
Accessでテーブル名やクエリ名一覧の抜き出し
Access(アクセス)
-
11
1つのテーブルに同じデータを参照する複数の列がある場合…
SQL Server
-
12
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
13
クエリで出来た表にチェックボックスを追加する
その他(Microsoft Office)
-
14
Accessでフォームから別フォームのテキストボックスの値を設定する
Visual Basic(VBA)
-
15
Accessを開きなおすとテキストボックスの値がエラー#Name?になる
その他(データベース)
-
16
Access レポート印刷するときに1ページに収める方法
Access(アクセス)
-
17
商品番号を入力すると、商品名フィールドに自動で名前が出てくるようにしたいのですが・・・
その他(データベース)
-
18
選択したチェックボックスのみチェックを入れたいのですが
その他(データベース)
-
19
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
20
【Access】クエリで抽出したデータをCSV形式でエクスポートできますか?
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
2つのテーブルに共通するレコ...
-
テーブルに表示されているもの...
-
ACCESSユニオンクエリから新テ...
-
Microsoft Access 「Form」のボ...
-
access2000・・テーブルをデー...
-
ACCESSでテーブルをコピーしよ...
-
アクセス 部分一致の抽出
-
Accessのテーブルで、リンク?...
-
Accessでリストの並び順を変更...
-
Accessのリンクされたテーブル...
-
access vbaにてテンポラリーテ...
-
Accessでリンクテーブルからロ...
-
Acccessで2つのテーブルから1...
-
クエリで同一テーブルの複数回...
-
ACCESS テーブルを見比...
-
Access 2010での更新日付順表示...
-
accessエラー回避について
-
AccessVBAで任意の複数リンクテ...
-
Accessで別テーブルの重...
-
ACCESS テーブルを見比...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2つのテーブルに共通するレコ...
-
最新日のデータのみ抽出するク...
-
Acccessで2つのテーブルから1...
-
テーブルに表示されているもの...
-
Accessでリストの並び順を変更...
-
Accessのリンクされたテーブル...
-
クエリで同一テーブルの複数回...
-
access vbaにてテンポラリーテ...
-
Accessのテーブルで、リンク?...
-
ACCESS テーブルを見比...
-
ACCESSユニオンクエリから新テ...
-
accessのテーブルを閉じたとき...
-
アクセス2016 チェックボックス...
-
アクセス 部分一致の抽出
-
Accessで使用しているリンクテ...
-
ACCESSのODBCリンクテーブルの...
-
アクセス2000でのリンク先...
-
Microsoft Access 「Form」のボ...
-
ACCESSでリンクテーブルのデー...
-
access2000・・テーブルをデー...
おすすめ情報