• ベストアンサー

【ACCESS】リレーションを組んでいるフィールドがNullの場合

一応、過去ログの検索もしてみましたが見当たらないようですので、質問させて下さい。(あまりにも初歩的すぎるのかしら?^^;) ○会員-施設クエリ  ■会員情報テーブル   ・会員情報ID   ・氏名   ・生年月日   ・[施設情報ID]  ■施設情報テーブル   ・施設情報ID   ・郵便番号   ・住所   ・電話番号 上記のような構成で2つのテーブルを[施設情報ID]でリレーションを組んでクエリを作成しております。 会員情報を検索する際、所属施設がわかるようにしたいわけですが、会員情報の入力時に[施設情報ID]がnullのままだと、そのレコードはクエリの表示結果に反映されません。(会員情報テーブルには「0」と表示されて出てくるのですが) 強制入力させたいところですが、会員情報入力の際に所属施設が判明していない場合があり、そういうワケにもいかない状況です。 [施設情報ID]がnullの場合は施設情報関連のフィールドは空欄のままでよいので会員情報部分だけでも表示してほしいのですが・・・。 どなたかお知恵をお貸し下さい。宜しくお願い致します。<(_ _)>

  • MAL
  • お礼率86% (25/29)

質問者が選んだベストアンサー

  • ベストアンサー
noname#12761
noname#12761
回答No.2

質問の意味が掴みきれないので滑ってたら御免なさい。 たぶんこういう事だと思いますが リレーションを設定するときに[結合プロパティー]の設定がありますが 3つ選択肢のある中で 1両方のテーブルの結合フィールドが同じ行だけを含める。 になっていたら2か3の '会員情報テーブル'の全レコードと '施設情報テーブル'の同じ結合フィールドのレコードだけを含める。 を選択すれば良いのではないでしょうか

MAL
質問者

お礼

回答頂き有難う御座いました。<(_ _)> 皆様のアドバイスで何とか解決できそうです。

その他の回答 (4)

回答No.5

話は、変わりますが・・・ この質問は、トピ違いかと・・・ データベースの、その他に上げるべきだと思います。

MAL
質問者

お礼

ご指摘有難う御座います。<(_ _)> 次から気をつけるようにしたいと思います。

回答No.4

ACCESSがないんで、一般的な話ですが、この手の問題は良くおきます。 解決策は、2つあります。 実際には、同じなんですが。 ACCESSでの実装は、参考URLを参考にしてください。 外部結合 SELECT * FROM 会員情報テーブル LEFT OUTER JOIN 施設情報テーブル ON 会員情報テーブル.施設情報ID = 施設情報テーブル.施設情報ID; UNION結合 SELECT 会員情報ID,氏名,生年月日,施設情報ID,郵便番号,住所,電話番号 FROM 施設情報テーブル,会員情報テーブル WHERE 会員情報テーブル.施設情報ID = 施設情報テーブル.施設情報ID UNION SELECT 会員情報ID,氏名,生年月日,NULL,NULL,NUll,NULL FROM 会員情報テーブル WHERE 施設情報ID IS NULL

参考URL:
http://ikari.ikari24.com/db/access2.html http://www11.plala.or.jp/studyhall/access/sql03.html
MAL
質問者

お礼

回答頂き有難う御座いました。<(_ _)> 皆様のアドバイスで何とか解決できそうです。

  • asahina02
  • ベストアンサー率47% (95/202)
回答No.3

アクセスでクエリを作る場合、おそらくデータシートビューでやってますよね? この場合、二つのテーブルを繋ぐ線が出ていると思います。 普通に作るとこの線は両端に矢印があると思うのですが、この線をダブルクリックすると「結合プロパティ」という画面が出てきます。 ここで2番or3番を選択することで実現できると思います。 ちなみにSQL文でやる場合、初期値はINNER JOIN というようになっていますが、これをLEFT JOIN または RIGHT JOIN に変更します。 違うビューでやっている場合は、別途ご相談ということで・・・

MAL
質問者

お礼

回答頂き有難う御座いました。<(_ _)> 皆様のアドバイスで何とか解決できそうです。

noname#223623
noname#223623
回答No.1

いちばん簡単な方法ですが、施設情報テーブルに「施設不明」のレコードを追加するのはだめですか。つまり、nullにしないで、9999が入っていたら施設がわからない(もしくは決まってない?)という感じ。 ■施設情報テーブル 施設情報ID:9999 施設名:不明 郵便番号: 住所: 電話番号: ■会員情報テーブル 会員情報ID:1 氏名:○○○○ 生年月日:2000/01/01 施設情報ID:9999 * 9999は例なので実際にあわせたIDを考えてください。 * 施設名は質問文にないですが適当な項目がないので勝手に追加しました。この辺は適当に。 根本的な問題ですが、値をnullにしておくと「入力忘れ」との区別がつきませんね。重要な項目には、できるだけ値を入力したほうが間違いないと思います。そのほうが後で修正するのも楽なはずです。

MAL
質問者

お礼

回答頂き有難う御座いました。<(_ _)> 皆様のアドバイスで何とか解決できそうです。

関連するQ&A

  • クエリでの入力が表示されません

    アクセスを使って会員情報の整理をしたいのですが、上手くいきません。 テーブル1 ・ID ・会員名 ・住所 テーブル2 ・ID ・所属委員会 ・所属部会 上記2つのテーブルにリレーションを組んで、クエリを作成しました。 クエリ ・ID ・会員名 ・会員住所 ・所属委員会 ・所属部会 クエリの画面で入力をし画面をいったん閉じてしまうと、 今まで入力しているものは表示されずに新しいレコードのみが表示されています。 でも、画面を閉じる前のレコードはきちんとデーターに反映されているのですが・・・ どうしたらクエリに今までの入力が表示されるのでしょうか? 宜しくお願いします。

  • アクセスで、1つのフィールドに2つのリレーションをかけると。

    メールのデータベースを作っています。 T_メール本体のテーブル (フィールド項目は) ID(主キー) 宛先名 件名 本文 T_CCリストのテーブル (フィールド項目は) メールID(主キー) ID 宛先名 T_BCCリストのテーブル (フィールド項目は) メールID(主キー) ID 宛先名 これに、T_メール本体のIDとT_CCリストのIDをリレーションさせて さらに、T_メール本体のIDとT_BCCリストのIDをリレーションさせると いうのは可能でしょうか?こうすると、表示は出来ますが、入力及び更新が出来なくなるのですが。 以上、よろしくお願い致します。

  • Access2003 リレーションされたサブフォームの抽出

    Access顧客情報のデータベースを正規化(VBA)している初心者です。リレーションされているテーブルを元にクエリ(3つのテーブルをつなげただけ)を作成しメインフォームにサブフォームを作りました。3つのテーブルは、1対多でリレーションされています。テーブルAのGR_IDやグループ名で検索しそれに紐づいているCOmpanyは抽出できるのですが、サブフォームのテーブルBのCOmpany nameから抽出することができません。メインフォームからオプションボタンを使用してメインとサブの両方のテーブルを検索したいので、子・親リンクの設定をはずせませんよね?以前の類似質問で「サブフォームのフィルターに入力し、フィルター実行でうまくいきました」とありましたが、具体的にどのように設定(マクロやVBA、再クエリ?)すればいいのかわからず悩んでいます。どうぞ初心者向きのアドバイスをよろしくお願いいたします。 テーブルA GR_ID グループ名 ※テーブルA(1):テーブルB(多) テーブルB GR_ID Company_ID Company name ※テーブルB(1):テーブルC(多) テーブルC Company_ID salesman

  • Accessのリレーションのことについて

    すいません、お世話になります。 次のようなテーブルがあります。 テーブル 【営業所データ】 フィールド  営業所ID(キー)        営業所名        住所 デーブル 【社員データ】 フィールド  社員ID(キー)        営業所ID        社員名 デーブル 【社員写真】 フィールド  社員写真ID        社員ID        店舗ID        社員写真 【営業所データ】の営業所IDと【社員データ】の営業所IDがリレーションで、同じく 【社員データ】の社員IDと【社員写真】の社員IDがリレーションで結んであります。 【社員データ】を基にしたクエリがあり   社員ID   営業所ID   営業所名   社員名 となっているので、営業所名は営業所IDを入力することによって、フォームにおいては自動表示されます。 さて、次が質問になるのですが、 【社員写真】を基にしたクエリがあります。   社員写真ID   社員ID   社員名   営業所ID   営業所名   社員写真 社員IDを入力することで、フォームにおいては社員名・営業所IDが自動表示されるのですが、営業所名を表示することができないで困っています。 基本的な事項だとは思いますが、わからなくなってしまいました。よろしくお願いいたします。        

  • ACCESSのリレーション

    3つのテーブル間でリレーションを組んでいる場合のクエリについて教えてください。 言葉では説明し辛いので表記方法のルールを・・・ <ルール> テーブル→A、B、C レコード番号→1、2、3・・・ Ex.テーブルAのデータ番号1 → 「A1」と表記   テーブルCのデータ番号3 → 「C3」と表記 <前提> テーブルA、B、Cのそれぞれに「顧客ID」というフィールドがあり、これを根拠にリレーションをとっています。A、B、Cは「顧客ID」と言う点ではつながりがありますが、BとCとは「顧客ID」という以外につながりがりがありません。 <出力したいレポートの形> 大見出しをA1、A2、A3とした上で、A1に関係するBテーブルのデータ、Cテーブルのデータを集めたいのです。 この場合、BとCのデータは単純に小分類としてそれぞれが素直にAに関連するものだけがおかれるだけにしたいです(BとCを絡めたたくない)。 具体的には、 [A1] --[B1 B3 B5] --[C2 C5 C7] [A2] --[B2 B4] --[C1 C8] [A3] --[B7 B8] --[C3 C4 C6] というふうにしたいのですが・・・ 実際には、 [A1] B1 C2 B1 C5 B1 C7 B3 C2 B3 C5 B3 C7  ・  ・  ・ という感じでBとCも絡んだ形になってしまいます。 そのため、クエリのデータを見てもものすごい量になっています。 リレーションの組み方で解決できるものなのでしょうか?それとも、クエリをAとB、AとCのものにそれぞれ分けて、レポートも別々に出力するしかないのでしょうか?出来れば1つの表にしたいのですが・・・

  • リレーションで?

    ACCESS 2003を使って作成中なのですが、どうしてもわからないところがありましたので教えてください。 現在テーブルで、 「世帯テーブル」 ○ 世帯ID ○ 郵便番号 ○ 住所 ○ 電話番号 「個人テーブル」 ○ 世帯ID ○ 個人ID ○ 氏名 ○ 生年月日 ○ 性別 「詳細テーブル」 ○ 世帯ID ○ 個人ID ○ その他 とし、フォームで 「世帯フォーム」 ○ 世帯ID ○ 郵便番号 ○ 住所 ○ 電話番号 「個人フォーム」 ○ 世帯ID ○ 個人ID ○ 郵便番号 ○ 住所 ○ 電話番号 ○ 氏名 ○ 生年月日 ○ 性別 「詳細フォーム」 ○ 世帯ID ○ 個人ID ○ 郵便番号 ○ 住所 ○ 電話番号 ○ 氏名 ○ 生年月日 ○ 性別 ○ その他 というようにして、世帯IDでリレーションしてます。 入力の順番は、まず「世帯」に入力し、それから「個人」に入力し、最後に「詳細」に入力したいと思ってます。 そこで、個人フォームを入力するときに世帯IDを入力すると自動的に郵便番号、住所、電話番号が入力され、詳細フォームで入力するときに世帯IDと個人IDを入力すると該当項目が全て自動的に入力されるようにしたいと思ってます。 その場合、テーブルとフォームは作って世帯IDでリレーションするところまでいったのですが、ここから先どのようにしたらよいのかがわかりません。 どなたかお力を貸していただければと思います。 どうぞよろしくお願いいたします。

  • Access リレーションが分かりません。

    こんにちは、Access初心者です。 現在の受注テーブルをIDベースでCSVでエクスポートするシステムを追加しようと思っているのですがイメージがわきません。 同じデータベースにCSVテーブルを新規で追加し受注テーブルのIDとCSVテーブルの受注IDを一対多でリレーションをしました。(受注テーブルにはデータが入っていますがCSVは新規です。) 受注テーブル ID:オートナンバー 納期:日付 品番:テキスト 数量:数値 CSVテーブル ID:オートナンバー 状況:テキスト...未と済をコンボボックスで選択式 受注ID:数値 メインフォームでCSVテーブルの状況ベース、受注テーブルの納期ベースでデータを抽出 サブフォームで上記条件のデータが見れるように作ろうとしました。 ですが、サブフォームクエリの段階でデータが新規入力レコードしか表示されてきません。 どうしたら、受注テーブルの一つ一つのレコードにCSVテーブルのレコードが結びつけられますか。 ど素人ですみません。

  • filemakerでの繰り返しフィールドのリレーション

    Filemakerの使い方で質問です。 WindowsでFilemaker8.0を使用しています。 部品マスタがあり、下記のようなものだとします。 部品番号 部品名 001   パーツA 002   パーツB 003   パーツC 管理マスタがべつにあり、部品マスタと部品番号でリレーションを 組んでいます。 これを1つのレコードに複数入力したいので繰り返しフィールドで 入力は部品番号で行い、その横に部品名が自動的に表示されるように したいのですが、売上入力テーブルに新しいフィールドを定義して ルックアップを利用する方法は判るのですが、それではマスタを 変更しても過去のレコードまでは変化しません。 部品マスタを変更した際に過去のレコードも自動的に変更して欲しいので 繰り返しフィールドをリレーションで部品名を表示させたいのですが可能なのでしょうか。 以上、よろしくお願いします。

  • Access2000フォームにリレーションしたテーブル内容を入れたい

    Access2000フォームにリレーションしたテーブル内容を入れたい Access2000を利用していますが、フォームにリレーションしたテーブル内容を表示したいです。 具体的には 顧客情報テーブルのフォームに履歴テーブルの情報や、入金テーブルなどを表示したいです。 サブシートでは見づらく入力ミスとかが発生してしまうので・・ よろしくお願いします。

  • Access 一対一リレーションの編集

    こんにちは 現在、Accessと他のソフトとの連携をするために奮闘しています。。。知恵をお貸下さい。 Accessには元々受注テーブルがあります。 主キーID:オートナンバー 受注日:日付型 納期:日付型 図番:テキスト型 数量:数値 単価:数値 とあり、データがすでに存在しています。他のソフトへエクスポートを継続的に行うにあたって 新規にテーブルを作成し、一対一リレーションをしようとしています。 新規テーブルは 主キーID:オートナンバー 取引先コード:テキスト型 担当者コート:テキスト型 区分コード:テキスト型 実出荷日:日付型 エクスポート状況:数値 そして、受注テーブルと新規テーブルのIDを一対一でリレーションしクエリを作成し、エクスポートしようと思っています。 その際、新規テーブルの方はデータが空なのでクエリ結果が得られないと思うのですが。。。 どうやって既存の受注テーブルと一つ一つのレコードを繋げる事が出来ますか❓ 編集方法をどなたか教えて下さい。 素人ですみません。