• 締切済み

アクセスのクエリーについて

テーブルが2つあってクエリーを作成したいのですが、 <テーブル1> 氏名  項目1  項目2  項目3 山田  A    B    C というテーブルが1つあって、それぞれの項目1~3のフィールド のA~Cに対して <テーブル2> 項目コード   項目名 A       あいうえお B       かきくけこ C       さしすせそ というテーブルとリンクさせ 氏名  項目1     項目2     項目3 山田  あいうえお   かきくけこ   さしすせそ とあらわれるように作成したいのですが、それぞれ項目1~3に対して リンクさせたいのが、「テーブル2」を使用します。 この場合今は同じ内容で「テーブル2」を3つ作成してそれぞれでリンク させていますが、数が多くなりすぎると「リンクが複雑すぎます」とはねられます。「テーブル2」1つでリンクさせる方法はありますか?

みんなの回答

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.6

>はい。たくさんの項目がずら~~~~っと横に並んでいるのです。(45列も・・・) Accessのバージョンは何でしょう? Access97のクエリーではテーブルは32個までしか使用できません。

  • tamo
  • ベストアンサー率22% (4/18)
回答No.5

他の人の回答と同等ですが、アクセスの画面からの操作手順を示します。 (1)新規のクエリーをデザインビューで作成します。 (2)テーブル1を追加します。 (3)氏名をダブルクリックします(クエリーの1番目の出力項目となります) (4)テーブル2を追加します。 (5)テーブル1の項目1をドラッグして、テーブル2の項目コードにドロップします。(2つの項目が線で、結ばれます) (6)テーブル2の項目名をダブルクリックします(クエリーの2番目の出力項目となります) あとは(4)から(6)を、項目2および項目3について繰り返せば目的のクエリーができあがります。 (7)クエリーを実行する。メニューのクエリー(Q)から実行(R)を選びます。 ※結局、テーブル2は3回追加することになります。 これはあくまで追加であってテーブル2を作成しているわけではありませんので、質問の答えとして妥当だと思われます。 ひょっとすると、もっと多くの列で行いたいのでしょうか?もしそうならば、正確な例を提示してくださいね。   補足。 テーブルの追加方法 (1)メニューのクエリー(Q)からテーブルの表示(T)を選びます。 (2)テーブルの一覧が表示されますので追加したいテーブルを選んで追加(A)ボタンをクリックします。

koutoubu34
質問者

補足

はい。たくさんの項目がずら~~~~っと横に並んでいるのです。(45列も・・・)それでやはり追加、コピーして同じようにしても複雑とでます。 No.2.4の方の方法もやはり同じになってしまいます。 すみません・・・・。勉強不足です。

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.4

簡単にクエリで処理させるには テーブル1の選択クエリを作ってそのクエリにテーブルの追加でテーブル2を必要 な数だけ追加します。テーブル2_1という表示になるはずです。 テーブル1の項目1とテーブル2を 項目2とテーブル2_1を 項目3とテーブル2_2を リレーションして各々項目をクエリに追加すれば「リンクが複雑すぎます」のメッセージ は出ないと思うのですが。

  • BlueRay
  • ベストアンサー率45% (204/453)
回答No.3

>SELECT >T1.氏名, >(select テーブル2.項目名 From テーブル2 WHERE テーブル2.項目コード = T1.項目1) as 項目1, >(select テーブル2.項目名 From テーブル2 WHERE テーブル2.項目コード = T1.項目2) as 項目2, >(select テーブル2.項目名 From テーブル2 WHERE テーブル2.項目コード = T1.項目3) as 項目3 >FROM テーブル1 as T1; これの原形は、以下のSQLです。 SELECT T1.氏名, T1.項目1, T1.項目2, T1.項目3 FROM テーブル1 as T1; ※T1は、テーブル1の代わりの呼び名です。 これだと、結果は   山田 A B C が帰ってきます。 なので、まずは項目1の内容の”A”と言うコードをテーブル2から検索してこないといけないので >(select テーブル2.項目名 From テーブル2 WHERE テーブル2.項目コード = T1.項目1) as 項目1 とします。これで、項目コード”A”の項目名”あいうえお”が取得できます。 項目2・3も同様です。 そして、この文には呼び名が無いのでasで名前を付けてやります。 説明が下手なので、うまく伝わらないと思いますが・・・ こんな説明で如何でしょうか。

koutoubu34
質問者

補足

すみません。アクセスの「超図解」のSQLクエリーを読みながらやってみましたが、さっぱり理解できません。ユニオン、パススルー、データ定義と3種類あるのか・・・。ほ~・・・っとわかるだけで、「じゃあ、この場合はなに!?」とそこからわかりません。もっと勉強してからお聴きすることにします。いろいろ教えて頂いてありがとうございました。独学でできるものなのでしょうか?おすすめのテキストなどありますか?

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

テーブルの表示画面で、テーブル2を選んで3回追加ボタンを押してください。 で、テーブル1の項目1、項目2、項目3と、3つのテーブル2をそれぞれ結合していけばOKです。 追加した3つのテーブルの名前を変更するには、テーブルを右クリックして出てくるメニューのプロパティの中の別名を変更すれば変わります。

  • BlueRay
  • ベストアンサー率45% (204/453)
回答No.1

あまりクエリーやってないので、間違っているかもしれないですけど こちらでやってみたら、望みの結果と同じになったので掲載します。 以下のSQL文で如何でしょうか? SELECT T1.氏名, (select テーブル2.項目名 From テーブル2 WHERE テーブル2.項目コード = T1.項目1) as 項目1, (select テーブル2.項目名 From テーブル2 WHERE テーブル2.項目コード = T1.項目2) as 項目2, (select テーブル2.項目名 From テーブル2 WHERE テーブル2.項目コード = T1.項目3) as 項目3 FROM テーブル1 as T1;

koutoubu34
質問者

補足

早速お答え頂きありがとうございます。ただ、初心者で意味がよくわかりません・・・。SQL文て?くらいのレベルです。ウイザードみたいなので導いてくれるものなのでしょうか?申し訳ありませんが、式の説明をして頂けたらありがたいです。どうもすみません。

関連するQ&A

  • Access クエリについて

    Accessのテーブル1に、フィールド「コード」「回数」があり、レコードとして A,32 B,20 C,13 ・・・というように、ランダムなコードと回数がセットされているとします。コードは主キーです。 このテーブル1を元にしたクエリで A,1 A,2 A,3 ・・・ A,32 B,1 B,2 ・・・ B,20 C,1 C,2 ・・・ C,13 というように、コードごとに「回数」と同じ数のレコードがクエリ上に生成されるようにしたいのですが、こういうことは出来るのでしょうか?出来ればSQLで回答いただけないでしょうか。

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

     アクセスでソフト作成中です。そこで教えてほしいことがあります。 たとえば下記のように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にリレーションシップは設定されていない。) よろしくおねがいします。

  • アクセスのクエリで出来る事なのでしょうか?

    以下の様な処理がクエリで出来るものかの判断がつかず、また、出来るとしてもクエリの作り方が判りません。。。 [テーブルA] コード 品名  種類 1111  A    0 1111  A    1 1111  A    2 1111  A    3 2222  B    0 2222  B    1 2222  B    2 2222  B    3 2222  B    4 3333  C    0 3333  C    1 3333  C    2 3333  C    3 3333  C    4 3333  C    5 3333  C    6 以上の様なフィールド構成を持つテーブルです。 「コード」で管理される「品名」の持つ「種類」の列の最大値を、新しく追加した「在庫」列を持つテーブルBの「在庫」列に抽出して以下の様に同一「コード」内に全て書き込みたいと思っておりますが、クエリ作成の勉強を始めたばかりで、上記の様な複雑(?)なクエリの作り方が判りません。 ※簡単なクエリをデザインビューで作ったり、SQL ビューで簡単な改造が出来る位です。 [テーブルB](処理後) コード 品名  種類 在庫 1111  A    0   3 1111  A    1   3 1111  A    2   3 1111  A    3   3 2222  B    0   4 2222  B    1   4 2222  B    2   4 2222  B    3   4 2222  B    4   4 3333  C    0   6 3333  C    1   6 3333  C    2   6 3333  C    3   6 3333  C    4   6 3333  C    5   6 3333  C    6   6 尚、「種類」列の値は必ず0から順番に(012345・・・の様に)並ぶ規則となっております。 テーブルAに「在庫」列を追加挿入してから「種類」の最大値を書き込む方法でも、テーブルB(テーブルAをコピーして「種類」列を追加したテーブル)に書き込ませる方法でもどちらでも問題はありません。 どなたかご教示頂ければと思います。宜しくお願い致します。  

  • アクセス:文字レコードの集計をクエリで次のようなことを。

    こんにちは。アクセス初心者です。よろしくお願いします。 テーブル、もしくはクエリで次のようなものがあるとします。 id  氏名       A     B     C    D  ・・・ 28 山田 太郎  ○○ 88 海川 花子      △△ 28 山田 太郎          □□ 28 山田 太郎             △□ 88 海川 花子 ×× を id 氏名      A    B    C  D ・・・ 28 山田 太郎  ○○      □□ △□ 88 海川 花子  ××  △△ のようにまとめるクエリでの加工は可能でしょうか? 前提として、1レコードにid、氏名のほかは一つのフィールドを選んで入力することとしています。 よろしくお願いします。

  • Accessの不一致クエリについて

    Accessの初心者です。二つのテーブルの異なるフィールどを比較する方法について、教えてください。 例えば、"6523610"という数字が両方のテーブルにあるかどうか調べたいとします。 テーブルA 523(フィールド名:契約コード)+610(ID) テーブルB 6523(フィールド名:取引コード)+61(フィールド名:地域コード) と、それぞれ構成が違います。頭につく"6"と最後の"0"は共通の数字です。クエリで新たなフィールドを作って、"6523610"にするまではわかるのですが、どのフィールドを関連づけていいかわかりません。このような場合は、不一致クエリではできないのでしょうか? 仕事で、明日中にデータを調べなければいけないので困っています。 よろしくお願いします。

  • Accessのユニオンクエリーで3つのクエリを集計

    Accessのユニオンクエリーで3つのクエリを集計したいのですが Aクエリ 氏名  役員名  就任月  任期 山田   会長   24    1 田中  副会長   24    1 Bクエリ 氏名  役員名  就任月  任期 山田  副会長   12    0 田中   理事   24    1 Cクエリ 氏名  役員名  就任月  任期 山田   会長    24    1 田中  副会長   24    1 結果 氏名  役員名  就任月  任期 山田   会長    48    2 山田  副会長   12    0 田中  副会長   48    2 田中   理事   24    1 このような結果を得ることは出来ますでしょうか? SELECT [氏名], [役員名],[就任月],[任期] FROM [Aクエリ名] UNION SELECT [氏名], [役名],[就任月],[任期] FROM [Bクエリ名] UNION SELECT [氏名], [役名],[就任月],[任期] FROM [Cクエリ名]; このように記述すると 氏名  役員名  就任月  任期 山田   会長   24    1 山田  副会長   12    0 山田   会長   24    1 田中  副会長   24    1 田中   理事   24    1 田中  副会長   24    1 このような結果になってしまうのですが・・

  • 【Access2007】クエリを教えてください

    Access2007を使用しています。 以下のような3つのテーブルがあります。 テーブルA No    項目a 1     ○ 2     ○ 3     ○ 5     ○ テーブルB No    項目b 1     ○ 4     ○ 5     ○ テーブルC No    項目c 1     ○ 2     ○ 4     ○ 6     ○ これらの3つのテーブルから以下の結果を返すクエリはどうすればいいのでしょうか? No    項目A   項目B   項目C 1     ○     ○     ○ 2     ○            ○ 3     ○ 4            ○     ○ 5     ○     ○ 6                  ○

  • accessのクエリで入力が不可能…

    【テーブルA】 フィールド1〔数値型〕 フィールド2〔テキスト型〕 フィールド3〔テキスト型〕 フィールド4〔数値型〕 【テーブルB】 フィールド1〔数値型〕 フィールド2〔テキスト型〕 フィールド3〔数値型〕 フィールド4〔テキスト型〕 となっています。 両方のテーブルを使い、クエリを作成しました。 リレーションが、テーブルAのフィールド1と、テーブルBのフィールド3に設定してあります。 このようにして作成したクエリでデータの入力ができません。 なぜでしょうか? Access2000です。

  • アクセスのクエリの作り方

    初心者なので教えてくださいませんか? アクセスでテーブルを複数作成して、それをクエリで結合するときに、どのテーブルからどのフィールドを選べばいいのかわかりません。 例えば・・・ 売上テーブル:NO 売上日 商品コード 数量 商品テーブル:商品コード 商品名 単価 この二つのテーブルを結合するクエリを作ります。 NO 売上日 商品コード 商品名 単価 数量 上記のフィールドを使用したいのですが、このとき、商品コードをどちらのテーブルのを使ったらよいのでしょう。 その判断は何からしたらよいのでしょうか。 うまく説明できているかわかりませんが、よろしくお願いします。

  • Accessのクエリで2つのフィールドが同条件の場合に結合したい

    Accessのクエリで2つのフィールドが同条件の場合に結合したい 以下のようなテーブルが2つあって、その2つのフィールドが一致する場合につなげるクエリを作りたいと考えています。 【テーブル名:勤怠データ】 氏名│日付│出勤時刻 ────────────────── 鈴木│2/1│8:01 鈴木│2/2│8:02 鈴木│2/3│8:03 高橋│2/1│9:01 高橋│2/2│9:02 高橋│2/3│9:03 【テーブル名:シフト】 氏名│日付│シフト ────────────────── 鈴木│2/1│A 鈴木│2/2│B 鈴木│2/3│A 高橋│2/1│B 高橋│2/2│C 高橋│2/3│B 【クエリ:シフト勤怠データ】←作りたいもの 氏名│日付│シフト│出勤時刻 ────────────────── 鈴木│2/1│A│8:01 鈴木│2/2│B│8:02 鈴木│2/3│A│8:03 高橋│2/1│B│9:01 高橋│2/2│C│9:02 高橋│2/3│B│9:03 氏名と日付のフィールドが一致するときに結合させたいのですが、 デザイン画面でつなげればいいのかわかりません。 ご回答よろしくお願い致します。

専門家に質問してみよう