
顧客情報の入ったテーブルにメイン担当者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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
クエリ上でフィールド名が2つあるときの見分け方
Access(アクセス)
-
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
-
4
アクセス:クエリの結合とリレーションシップの違いについて
Access(アクセス)
-
5
ACCESSでクエリ作成時複数のフィールドを同じマスタ項目から抽出する方法
その他(データベース)
-
6
テキストボックスのvalueとtextの違い
Visual Basic(VBA)
-
7
Access ¥マークを表示しない
Excel(エクセル)
-
8
テーブルリンク リンク元を知りたい
Access(アクセス)
-
9
Accessでレコードの複製
Access(アクセス)
-
10
AccessのWHERE句において、変数は使用できますか?
Access(アクセス)
-
11
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
12
[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには
Access(アクセス)
-
13
Acccessで2つのテーブルから1つのフォームをつくりたい
Access(アクセス)
-
14
AccessのFormの設定で、開いた時に必ず最大化で表示する方法が分からず困っています
Access(アクセス)
-
15
【アクセス】クエリで、行と列を入れ替えるには?【access】
Access(アクセス)
-
16
Accessで、1つのマスターを複数のフィールドで参照する
Access(アクセス)
-
17
Accessで、1つの項目に複数の置換えを1度でするには?
Access(アクセス)
-
18
Access2003 クエリで、空の列は作れますか?
Access(アクセス)
-
19
ラベルとテキストボックスのグループ化を解除したい
Access(アクセス)
-
20
iif関数で3つ以上条件を抽出したい場合
IT・エンジニアリング
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
2つのテーブルに共通するレコ...
-
最新日のデータのみ抽出するク...
-
アクセス2016 チェックボックス...
-
ACCESS テーブルを見比...
-
テーブルに表示されているもの...
-
Accessのテーブルで、リンク?...
-
Acccessで2つのテーブルから1...
-
Accessのリレーションシップウ...
-
Accessのリンクされたテーブル...
-
ACCESSユニオンクエリから新テ...
-
AccessのフィールドにIPアドレ...
-
ユニオンクエリをデザインビュ...
-
ACCESSのODBCリンクテーブルの...
-
ACCESS テーブルを見比...
-
アクセス2000でのリンク先...
-
アクセスのサブデータシート名...
-
access vbaにてテンポラリーテ...
-
AccessでのリンクテーブルとADO...
-
Accesss テーブルの最終更新日...
-
ACCESSでリンクテーブルのデー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2つのテーブルに共通するレコ...
-
ACCESSユニオンクエリから新テ...
-
テーブルに表示されているもの...
-
Accessのテーブルで、リンク?...
-
access vbaにてテンポラリーテ...
-
Acccessで2つのテーブルから1...
-
Accessのリンクされたテーブル...
-
最新日のデータのみ抽出するク...
-
access2000・・テーブルをデー...
-
ACCESS テーブルを見比...
-
accessのテーブルを閉じたとき...
-
Accessでリストの並び順を変更...
-
クエリで同一テーブルの複数回...
-
ACCESSでテーブルをコピーしよ...
-
外部MDBのリンクテーブルの...
-
アクセス2000でのリンク先...
-
アクセス 部分一致の抽出
-
アクセス2016 チェックボックス...
-
ACCESSのODBCリンクテーブルの...
-
ACCESS テーブルを見比...
おすすめ情報