• ベストアンサー

アクセスのクエリ作成について

下記のようなテーブルとフィールドがあるとします。 Aテーブル  会社名 分類 都道府県 住所 HPアドレス  Bテーブル  担当者 部署 電話 メールアドレス Cテーブル  受付番号 分類 Dテーブル  受付番号 分類 ここでAテーブルの都道府県で一致するデータを抽出し、 下記のフィールドを表示するクエリを作成したいと思っています。 A 会社名 分類 都道府県 住所 HPアドレス B 担当者 部署 メールアドレス 電話 C 受付番号 D 受付番号 クエリを作成し実行しましたが、何もデータが出てきません。 全フィールド入力していないと抽出できないのでしょうか。 中にはHPアドレス等がない場合もあるのです。 すみませんが、どなたか教えて下さい。 よろしくお願いします。

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

  • ベストアンサー
  • shinkami
  • ベストアンサー率43% (179/411)
回答No.8

No.7に漏れがありました。再提示しますのでNo.7は無視してください。 >全フィールド入力していないと抽出できないのでしょうか。 キー項目でなければ問題ありません >会社コードという形で4つとも関連づけされています。。。 ひとつの項目が全てのテーブルのリレーション項目になっているのはどうかと思います。 >学科にも学校にも同じ企業から送ってくる場合があります。 以上の情報からでは次の体系が考えられます。 Aテーブル:会社名ID 分類ID 都道府県 住所 HPアドレス Bテーブル:担当者ID 担当者名 会社名ID 部署 メールアドレス 電話 学科テーブル:学科名ID(学校宛に来たときのために学校という科目を追加) 分類テーブル:分類ID 求人票テーブル:求人票ID 担当者ID 学科名ID 受付年度 受付日 受付窓口 各テーブル左端がキー項目でデータ形式は (分類ID、会社名ID、学科名ID :テキスト型)( 担当者ID、求人票ID:オートナンバー) これで次のリレーションが組めます [分類]→[A]→(会社ID)[B] →(担当者ID)[求人票] [学科]→(学科名ID)[求人票] リレーションシップは全て1対多の参照性合成です…→の左側のテーブルが1、右側のテーブルが多 次に右側のテーブルの項目にルックアップの設定をします 例として[A]から[分類]へのルックアップの作成です。 1.オブジェクトをテーブルにして、テーブル一覧表の中から[A]をアクティブにして、デザインアイコンをクリック 2.項目一覧内の分類をクリック 3.左下枠のルックアップタグをクリック 4.表示コントロール、値集合タイプ、値集合ソースの3項目を設定(いずれも入力枠の右端をクリックし、リストから選択) ※ 表示コントロール:コンポボックス 値集合タイプ:テーブル/クエリー 値集合ソース:[分類]

chormuno
質問者

お礼

詳しく教えて下さりどうもありがとうございます。 最初から作成しなおしという方向に持って行きたいと思います。 最初から作成ということになると現段階では時間が取れそうにないので、 とりあえずこちらは締め切っておきます。 ご丁寧にどうもありがとうございました。

その他の回答 (7)

  • shinkami
  • ベストアンサー率43% (179/411)
回答No.7

>全フィールド入力していないと抽出できないのでしょうか。 キー項目でなければ問題ありません >会社コードという形で4つとも関連づけされています。。。 ひとつの項目が全てのテーブルのリレーション項目になっているのはどうかと思います。 >学科にも学校にも同じ企業から送ってくる場合があります。 以上の情報からでは次の体系が考えられます。 Aテーブル:会社名ID 分類 都道府県 住所 HPアドレス Bテーブル:担当者ID 担当者名 会社名ID 部署 メールアドレス 電話 学科テーブル:学科名ID(学校宛に来たときのために学校という科目を追加) 求人票テーブル:求人票ID 担当者ID 学科名ID 受付年度 受付日 受付窓口 各テーブル左端がキー項目でデータ形式は (会社名ID、学科名ID :テキスト型)( 担当者ID、求人票ID:オートナンバー) これで次のリレーションが組めます [A]→(会社ID)[B] →(担当者ID)[求人票] [学科]→(学科名ID)[求人票]

  • shinkami
  • ベストアンサー率43% (179/411)
回答No.6

No.5のshinkamiです。 他の方にご異論があるかと思いますが キー項目はAccess任せに出来ますが、Aテーブルは会社名,Bテーブルは担当者名をキー項目に設定されることをお勧めします。 この方法については新しい質問を立ち上げてください、色々答えが得られると思います。

  • shinkami
  • ベストアンサー率43% (179/411)
回答No.5

エクセルデータが有るのならこのデータをアクセスにインポートしてはどうですか、手順を次に記します。 1.アクセスでインポートし易い様にエクセルデータを加工します。 1-1、ひとつのシートにはひとつの表であること ※複数のときは、同じブック内にシートを追加してここにカット&ペーストで データを移動します 1-2、ワークシート名を設定します。これがテーブル名になります。 1-3、項目名を1列にまとめます。これがフィールド名になります。 ※このとき1シート内に同じ項目名があってはなりません。 1-4、これでインポート準備完了です。名前をつけて保存します。 2.アクセスでのインポートです。 2-1、空のデータベースでアクセスを立ち上げます。 2-2、アクセス画面の左のオブジェクト枠がテーブルになっていることを確認して新規作成→テーブルのインポート→ファイルの種類をエクセルにして、インポート画面指示に従って行くが、主キーを自動的に設定するで完了です 3、テーブルの正規化。正規化されたテーブルがアクセスの強みです 3-1、ツールメニューから解析→テーブルの正規化から途中まではウィザード任せですが、テーブルが分けられた段階で各項目がいい加減なテーブルにきています、多分あなたのExcelファイルなら会社、担当者、分類…多くのテーブルが新規作成されますが、都道府県、住所は会社テーブルにドラッグ移動したり、データファイルに戻したり等々の作業になります 追伸、Aテーブルに分類項目がありますがCまたはDテーブルの項目では?、Aテーブルとしたら業種?

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.4

>関連づけ(リレーションシップ)はしています。 してるだけではだめです 全体として事象をきちんと表現できるような構造になっていないとね >テーブル名もあります。 >例としてあげたフィールド名は一部で、実際はもっとありますが・・・ いい答えを得ようと思ったら分かり安く説明しなきゃ そのためには下手な省力や隠し事はしないほうがいいですよ (的確な代替モデルを作成できるだけのスキルがあればここで質問したりしないですもんね) >アクセスならそれが解消できると聞き、 Accessでは矛盾したものを扱えるという意味ではなく 逆にいい加減なやり方は許容されないので やり方のほうを変えることになるという意味も含んでのことだろうと思いますよ >それは指示されていることなのです。 要求におかしいところがあれば、きちんと説明して変更を納得してもらうことも システム設計の仕事のうちです 学科と学校で別々に受け付けるとしても 後で重複をはずして合体させないと使い物にならないでしょうから そういうことが出来る構造にしておかないとだめでしょうね

chormuno
質問者

お礼

>(的確な代替モデルを作成できるだけのスキルがあればここで質問したりしないですもんね) はい、おっしゃる通りです。。。 >やり方のほうを変えることになる そのようですね。私の今の頭では、なかなかアクセスのやり方にスイッチが切り替わっていないですね。 >要求におかしいところがあれば、きちんと説明して変更を納得してもらうこともシステム設計の仕事のうちです その通りですね。 アクセスをもっときちんと勉強しないといけないですね。 どうもありがとうございます。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

>AとBをなぜ分けたかと言われたら自分でもよくわかっていないのですが そんなことより、このデータベースで何を管理したいのかということが見えてこないのですよ 受付情報を管理したいのなら、それがメインになります (受付がA、Bを参照しているという形かな?) まずAやBなんて意味のない名前じゃなく 何のテーブルかが分かるような名前をつけてみてください そうすれば頭の中も整理されると思いますよ >CとDは受付窓口が違うため、受付番号が違ってくるのです。 こんなことをしてはいけません 受付窓口情報が必要ならテーブルを分けずにフィールドを増やしましょう [受付T](受付番号、受付日、受付窓口、会社ID、担当者ID) >会社コードという形で4つとも関連づけされています。。。 同じフィールドがあるから関連付けられているということにはなりません

chormuno
質問者

補足

関連づけ(リレーションシップ)はしています。 テーブル名もあります。 例としてあげたフィールド名は一部で、実際はもっとありますが・・・ 作成段階に戻ってしまいましたね。 やはり、わからないまま作成してはだめですね。 求人データを入力しています。 今まではエクセルを使って入力していました。 1.学科に来た求人票を年度ごとに到着順に番号をふる 2.学校に来た求人票を年度ごとに到着順に番号をふる 窓口が違うというのはこういうことです。 ところが、学科にも学校にも同じ企業から送ってくる場合があります。 また、毎年毎年ほぼ同じ企業情報を入力することになります。 そこでアクセスならそれが解消できると聞き、作成することになりました。 学科と学校と別にする必要はないかもしれませんが、それは指示されていることなのです。 (別に質問を設けるべきなのでしょうが・・・)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

各テーブルをつなぐものがありませんね 都道府県を指定すればAテーブルを絞り込むことはできますが そのとき他のテーブルはどうなって欲しいのでしょう? そもそも4つのテーブルで何をしようとしているのかが見えてこないですよ CとDの違いも分からないし 受付を管理しようというのなら [受付T](受付番号、受付日、会社ID、担当者ID) でA、Bとは会社ID、担当者IDでリレーションさせる というようにしないといけないので社

chormuno
質問者

補足

いつもアドバイスありがとうございます。 関連づけは会社コードでしています。 AとBをなぜ分けたかと言われたら自分でもよくわかっていないのですが(素人ですみません。アドバイス頂いたまま作成したもので・・・) CとDは受付窓口が違うため、受付番号が違ってくるのです。 他にもすっきりした方法があると思います。 試してみたらこの方法で欲しいものが作成できたので、とりあえず現在のところこれでデータ追加中です。 (過去に QNo.2358920 QNo.2476341 QNo.2571411 でお伺いしました) 現在は一つのフォームに収めて入力しています。 フォームで都道府県を絞り込めば、きちんとデータが出てきますが、 それらをリスト形式にエクスポートしたいのです(4つのテーブルデータを全て含んだもの)。 そこで、データを追加しても常にリストが更新されるクエリで抽出できないかなと思ったのですが・・・

  • shinkami
  • ベストアンサー率43% (179/411)
回答No.1

各テーブル間に関連付け(リレーションシップ)をしましたか? 例えばAテーブルとBテーブルでは会社名と思われます。 Aテーブルで会社名がキー項目ならば、Bテーブルに会社名の項目を追加します。 Aテーブルでキー項目が別に存在するのであれば、それを受ける項目を追加します。 ※テーブル作成のときキー項目を設定しなかったら、ACCESS側でIDという項目を追加されます。 次に、ツールメニューのリレーションシップで関連付けをします。 ※関連付けする項目の一方がキー項目で、他方が通常項目

chormuno
質問者

補足

回答ありがとうございます。 ここに記し忘れていましたが、会社コードという形で4つとも関連づけされています。。。

関連するQ&A

  • Access クエリが入力できない

    Access 2003を使用しています 以前の担当のかたがつくったデータベースで、 会社で購入している薬剤を管理しているのですが、 これまでできたクエリの入力ができなくなってしまいましたので お力をかしてください。 テーブルA 管理番号 薬剤名 分類番号   ○ メーカー番号 ● 購入日 価格 テーブルB メーカー番号 ● メーカー名 テーブルC 分類番号   ○ 分類名 ○-○、●-●でリレーションシップでつなげています。 ある日、テーブルAのフィールドをいくつか増やしたところ テーブルA、B、Cをもとに作ったクエリの入力ができなくなってしまいました。 入力できるようにするにはどうすればよろしいでしょうか。 主キーは設定していません。 初心者なので、わかりやすく教えていただければうれしいです。

  • アクセス テーブル、クエリーについて

     アクセスでソフト作成中です。そこで教えてほしいことがあります。 たとえば下記のように2つのテーブルがあります。 テーブル1   テーブル2   フィールドA    フィールドB  a1       10  b1       20  c1       30          テーブル1の数値は固定します。そこで下記のようなクエリーを作成したいのです。 クエリー1 フィールドA フィールドB a1 10 b1 20 c1 30 テーブル2に数字を入れていくと テーブル1   テーブル2   フィールドA    フィールドB  a1       10  b1       20  c1       30           40 クエリー1 フィールドA フィールドB a1 40 b1 20 c1 30 このように数字が上書きされていくようなクエリーは作成できないでしょうか。(あくまでテーブル1の数値は固定、フィールドAとフィールドBにリレーションシップは設定されていない。) よろしくおねがいします。

  • Accessのクエリーで、*が入っているデータを抜出す方法って?

    助けてください! Accessのクエリーで、*が入っているデータを抜き出すのってどうやるんですか? クエリーの元になるテーブルは1つ、非常に単純なテーブルです。  ●フィールド1=「*」もしくはNullもしくは「英数字」  ●フィールド2=製品番号  ●フィールド3=メーカ番号 テーブルには上記3つのフィールドしかありません。 このテーブルの、「フィールド1に『*』が入っているデータを抜出したいのです。(抜出すのはフィールド1~3全て) 単純に選択クエリーで「抽出条件」に「“*“」と入れると、「フィールド1に英数字が入っている」行まで選択しちゃうんです。そりゃそうだよなーとは思うのですが、じゃあ、どうやったら英数字の入っている行は無視して、純粋に「*」だけの行を抜出せるのかわかりません。 誰かー!助けて―!

  • Accessのクエリで2

    お伺い致します。 テーブル名:テーブルA  フィールド:月日,販売先,品番 テーブル名:テーブル期間  フィールド:分類、始月日、終月日 テーブル名:材料テーブル  フィールド:品番,材料1,材料2, 分類 の3テーブルが有り ”テーブルA”の月日の違いで”テーブル期間”の分類を表示させた後 現在品番と分類で材料1、材料2の使用量をクエリで以下のように表示 クエリ名:Q_テーブルA 月日,販売先,品番, 材料1, 材料2 0501,東京販売,18-18, 270, 180...材料の使用量は月日と品番で決まる、 1105,仙台販売,18-21, 290, 190 0801,大阪販売,21-21, 300, 190 0907,東京販売,27-18, 350, 175  ここでお伺いしたい事は 材料テーブルの事ですが実際は品番が30種類、材料が10種類の300データに及び それに期間による材料テーブル1と2の2種類あります 各々の表はエクセルで計算させインポートさせた後ユニオンクエリで一緒にし テーブル作成クエリで”材料テーブル”を作成するという事をしていますが。 そのまま、テーブル1とテーブル2を月日の違いによる分類1,2でスイッチさせて クエリ”Q_テーブルA”を作成する方法が有りませんでしょうか 簡単に出来ると思いつつも良い方法が浮かばず回り道しています。 よろしくお願い致します。

  • 【Access】フィールドにつけた別名を同じクエリで抽出に使いたいです

    【Access】フィールドにつけた別名を同じクエリで抽出に使いたいです。 Access2003を使っています。 困っている状況は以下のようなもです。 ■テーブル1  ・フィールド1 ■クエリ1  ・フィールドA:フィールド1  ・フィールドB:[フィールドA]   【抽出条件】>=10 このような条件で、クエリを実行すると、 「パラメータの入力 フィールドA」というダイアログが立ち上がってしまいます。 上記載のクエリ1でフィールドAの[]は自然についてしまうのではずせません。 今はもう一つクエリを作る事でこの状況はなんとかしましたが、フィールドに別名をつける毎にクエリを作るとクエリの数が多くなってしまうので困っています。 クエリでフィールドに別名をつけた場合は、そのクエリ上でその別名を使って抽出をかけることはできないのでしょうか? よろしくお願いします。

  • Accessでのクエリ作成についてですが

    【Tジャンル】【T商品】【T仕入先】 ↑これらの3つのテーブルを使ってクエリを作成すると仮定します。 それぞれのテーブルにあるフィールドの内容は以下の通りです。 【Tジャンル】 [ジャンルコード(主キー)][ジャンル名] 【T商品】 [商品コード(主キー)][商品名][ジャンルコード] [仕入先コード][仕入原価][標準価格][終息][備考] 【T仕入先】 [仕入先コード(主キー)][仕入先名][フリガナ][郵便番号] [住所][建物名][電話番号][FAX番号][担当者名][メールアドレス] ここで質問があります。 クエリ作成のデザイングリッドのフィールドに [仕入先コード]を追加するとします。 [仕入先コード]は【T商品】と【T仕入先】両方にあるのですが、 フィールド名が同じならば、どちらから追加しても構わないものなのでしょうか? それとも、何か決まり事のようなものがあるのでしょうか? 基礎的な部分の質問ですが、ご存知の方がおられましたら、 どうか宜しくお願いします。

  • Accessのクエリで

    お伺い致します。 季節により材料の量目を変えて作る製品がありまして クエリのフィールドに 調合時期: Switch([月日]<="0715","1",[月日]<="0915","2",[月日]>"0915","1") のようにスイッチさせているのですが テーブル名:”テーブル期間”として 分類、始月日、終月日 1、0101、0715 2、0716、0915 1、0916、1231 を作りテーブルデータを変化させクエリに反映したいのですが どの様に考えればよいのでしょうか? (工場の所在地により月日を変化さる必要があります 所在地による気温の変化に合わせる為です。) SQLは取っ付き難く不得手で クエリのビューでフィールドや抽出条件等に式を書き込む方式位しか まだわかりません。クエリビューに書き込む方法で出来る方法が 有りましたら、お教えください。

  • アクセスのクエリ・リレーションの作り方について

    アクセスは初心者です。 今回顧客の保守、サポートに関するデータベースをアクセスで作ろうと考えています。 ■顧客リスト 会社名、部署名 それぞれ別々のコード番号があります。 ■業務名(訪問内容) 固有のコード番号があります。 ■毎月の訪問データ 担当者名・ID、訪問日、訪問先(会社名・部署名)、業務(訪問内容) 行先(訪問先) 会社名<部署名<業務(訪問内容)で分類し、いつ・どこに・何の業務で・誰が行ったか分かるようにしたいのですが、クエリ、リレーションはどうすればよろしいでしょうか? <例> ●マスターテーブル:(会社名、部署名、業務名(訪問内容)でtree構造になっています。) (フィールド1)(フィールド2)(フィールド3)(フィールド4) 株式会社A  総務課  点検    小泉10/10             修理    小泉10/6             調整              営業部   点検              修理    管10/15              調整    田中10/13        企画部   点検    田中10/6              修理              調整 ●訪問データテーブル: 小泉 10/6 株式会社A総務課・修理、 小泉 10/10 株式会社A総務課・点検 田中 10/6 株式会社A企画部・点検 田中 10/13 株式会社A営業部・調整 管  10/15 株式会社A営業部・修理 マスターテーブル(マスターテーブルを元にしたマスタークエリ)に新たにフィールド4をつくり、そこに訪問データテーブルとリレーションして、担当者・訪問日を入れたいのですが、どのようにしたらよろしいのでしょうか。

  • ACCESSで都道府県の抽出

    ACCESSで住所録の住所フィールドから都道府県を抽出し、同じテーブルの都道府県フィールドに入れたいのですがどのようにしたら良いのでしょうか?

  • アクセスでクエリーによる抽出方法

    アクセスでクエリーによる抽出方法を教えてください。 例えばテーブルに    フィールド1  フィールド2  フィールド3    ---------------------------------------      a     100     700       a      200     600       a     300     700 とします。そしてすべてクエリーにとりこみます。ここから抽出するのですが、      フィールド1  フィールド2   フィールド3    ---------------------------------------       a        100    700        a        200     600        a        300   700 抽出条件   [問1] または           [問2]                     [問3] 上記はクエリーのデザインビューですが、[問1]、[問2]、[問3]のパラメータすべてを入力するのであれば何も悩みません。しかし例えばフィールド1は"a"でフィールド2は検索せず(検索対象からはずす)、フィールド3は"700"を検索したい場合、[問1]では"a"を入力し、、[問2]は何も入力しなくて、[問3]は"700"を入力し検索すると、   フィールド1  フィールド2  フィールド3   ---------------------------------------      a    100    700      b    200    600      c    300    700   となるのです。どうにかして フィールド1  フィールド2  フィールド3 --------------------------------------    a     100     700  というような検索結果をだしたいのです。 アクセス初心者です。お願いします。

専門家に質問してみよう