• ベストアンサー

Accessクエリの、JOINの数の限界について

トランザクション系の大きなテーブルAに対し、多数のコード系テーブル(コードに対する名称を格納してあるテーブル)をJOINしてクエリを作っています。 テーブルAの大きさは、約200項目*約1000行程度です。 テーブルAに対し、次々にコード系テーブルをJOINしていっていたのですが、コード系のテーブルが19個になった途端にクエリが反応しなくなりました。 18個目までは、クエリを実行し、通常通りデータを参照することができるのですが、19個になった途端、クエリが反応しなくなってしまいました。具体的には、クエリのアイコンをダブルクリックした時点で固まったようになり、反応しなくなりました。30分ほど放っておいたのですが反応はないままでした。 なお、このクエリに使っているテーブルはイントラネットで繋がっているサーバのOracleDBからリンクしているテーブルです。そのため、通常、クエリを実行するとOracleへのログインダイアログが表示されるのですが、上記のコード系テーブル19個をJOINして実行した際には、このログインダイアログも表示されませんでした。このことから、反応がないのは性能的な問題ではなく、何らかの制限がかかっているのではないかと疑っています。 Accessのクエリには、JOINするテーブル数に上限があるのでしょうか。

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

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

レコードセットの制限を越えたのでないかと思うのですが・・。 Accessの仕様としてクエリのテーブル数が32・レコードセットのフィールド数が255・レコードセットのサイズが1GB・ネストしているクエリのレベルの数が50などの制限があります。 >コード系のテーブルが19個になった途端にクエリが反応しなくなりました。 19個目のテーブルをJOINした際に何か制限を越えたのではないかと思いますが。 フィールド数が超えたとか・・。 レコードセットのフィールド数など確認してみてはどうでしょうか。

その他の回答 (1)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

こちらにある「リレーションシップの設定数」がそれに該当するのか正直良く解りませんが、似たような経験があります。 http://hp.vector.co.jp/authors/VA014071/tips/spec_ac.html 私の場合は元テーブルが外部テーブルでは無くフィールド数も数十程度だったので、クエリーでテーブルを2分割してから、コード系と繋いで、再度それらを繋げました。

関連するQ&A

  • JOINの方法について

    毎度お世話になっております。 以下のテーブル1、テーブル2があります。 [テーブル1] CODE   1月  2月  A      10  10  C      30  30 [テーブル2] CODE   3月  4月  A      10  10  B      20  20  D      40  40 これを以下のようにくっつけたいのです。 [希望する結果] CODE   1月  2月  3月  4月  A      10  10  10  10  B             20  20  C      30  30  D             40  40 クエリ1(テーブル1 LEFT JOIN テーブル2とする)と、 クエリ2(テーブル2 LEFT JOIN テーブル1とする)を作り、 UNIONでくっつける方法を考え、希望した結果は得られましたが、 もっとスマートな方法(一つのクエリでできるような方法)が あればご教授ください。

  • accessのクエリ

    こんにちわ。 いまaccess2000を使っています。 あるフォームのコントロールソースとして ある選択クエリを指定しました。 そのクエリは元になるトランザクションテーブルと それに関連するマスタテーブルから構成されています。 そこでこのフォームの詳細セクションでデータを入力すると, トランザクションテーブルにそのまま登録されるように なっていますが,なぜか関連するマスタにまでデータが 登録されてしまいます。 なおそのときはマスタの名称項目のみに登録され, コード項目には何も登録されません。 トランのみに反映しマスタには反映しないようにしたいのですが, どうすれば良いでしょうか? 教えてください。お願いします。

  • アクセス クエリ の質問です

    いつも大変お世話になります。 アクセスクエリの質問ですが、テーブルデータより予定数が通常クエリで紐付いていて、もともとこの予定数はデータとして例えば90が入力されていて、普通に抽出すれば当然90が抽出できるのですが、クエリを実行すると、ダイアログなどで、手動で200と入力すると、200がクエリで出力させたいのですが・・・ 非常に、分りにくいかもしれませんが、アドバイスお待ちしております。

  • Accessの削除クエリについて

    Access2000でODBCを使ってMySQLへリンクテーブルを作成しています。 このテーブルを元に削除クエリを作成し、実行すると DATA 800件で約3分程度かかってしまいます。 ネットで色々調べてみたのですが、 高速化の記事を見つけることができません。 クエリのプロパティでトランザクションの使用を"いいえ"に変えて みたりしましたが全く効果がありません。 削除クエリを高速化するには、どうしたら良いのでしょうか?

  • ACCESS クエリの抽出のやり方

    初投稿になります。よろしくお願いします。 無礼な事、不明瞭な事がありましたらご指導宜しくお願いします。 ACCESS2007 クエリで困っています。 テーブル_出荷 【コード{主}】【出荷先(1)】【出荷先(2)】 テーブル_明細 【コード】【種類】【数(1)】【数(2)】と構成されたテーブルがあります。 フィールド【コード】はリレーションシップで繋ぎました。 クエリで 【コード(出荷)】【種類{抽出条件:果物}】【数(1)】【数(2)】【種類{抽:野菜}】【数(1)】【数(2)】 とテーブル_出荷・テーブル_明細・テーブル_明細_1で選択クエリをつくりました。 クエリを実行すると無事表示されたのですが、後日データを更新したら 表示されなくなりました。 おそらく【コード(出荷)】に対して【種類{抽:野菜}】が存在しないレコードが出てきたからだと思います。 存在しない場合は「空白」か「0」で表示したいのですが、何か方法がないでしょうか?

  • ACCESSのクエリーで

    ACCESSのクエリで たとえば下記のテーブルがあったとき コード 品名 1   商品001 3   商品003 4   商品A 7   商品BB と有ったときACCESSのクエリで 1   商品001 2 3   商品003 4   商品A 5 6 7   商品BB のようにテーブルに無いコードのところは空番にしないで 番号をだけを付けるのは可能でしょうか? もとのテーブルはいじりたくないので・・・ もし、やり方が有るならば教えてください

  • アクセス 2つのクエリーの集計について

    A: 選択クエリ|薬品コード|名称|数量|        | 001  |A  |1  | | 002  |B  |2  | | 003  |C  |3  | B: 選択クエリ|薬品コード|名称|数量|       | 001  |A  |1  | | 003  |C  |2  | | 004  |D  |3  | という2つのクエリから、 |     A   |    B |合計| |薬品コード|名称|数量|薬品コード|名称|数量| | | 001  |A  |1  | 001   |A |1  |2  |  | 002  |B  |2  | |  |  |2 |  | 003  |C  |3  | 003   |C |2  |5  |  |     |  |  | 004   |D  |3  |3  | というように、2つのクエリの結果も表示し、合計も表示 できるようなクエリの作り方を教えてください。 AとBの薬品コードを結合しても、両方の薬品コードを表示 できるような結合プロバディはないようにおもうのですが。 テーブルにしてからクエリにしないといけないのか、 そのあたりもわかりませんが教えてください。 よろしくお願いします。  質問内容書くときはうまくいっているのに、投稿だと線がずれているんですが、わかりますでしょうか?  

  • Accessクエリの作り方

    OS:Windows2000 Access Version:Access2002 大変基本的なことで申し訳ないのですが、どなたか教えてください。 以下のようなテーブルがあります。 ●問合せテーブル 受付NO 受付日 受付時間 社名 担当者名 ・ ・ 機器コード1 機器コード2 問題コード1 問題コード2 対応状況コード ●機器テーブル 機器コード 機器コード名 ●問題テーブル 問題コード 問題コード名 ●対応状況テーブル 対応状況コード 対応状況名 これらのテーブルを使って、単純にクエリで ●問合せクエリ 受付NO 受付日 受付時間 社名 担当者名 ・ ・ 機器名1 機器名2 問題名1 問題名2 対応状況コード としたいのです。 対応状況は、問合せテーブル内でもひとつなので、簡単にクエリで表示できるのですが、機器1・2、及び問題1・2はふたつあり、どのようにすれば名称がそれぞれ表示できるのかが分かりません。 テーブルのリレーションシップで、 対応状況テーブルと問合せテーブル はリレーションが張れました。 機器テーブルと問合せテーブルにリレーションを張ろうと思い、テーブルを追加して、2つ機器テーブルを表示させ、リレーションを張ってみましたが、それをクエリで編集しようとするとデータが参照できないのか、エラーもなく、クエリが開くだけになってしまいます。問題テーブルも同様です。 本当に初心者のお話で申し訳ないのですが、どなたか教えてください。 よろしくお願いします。

  • Accessのクエリ実行について

    すみません。ご存知でしたら、教えてください。 まず一点、基本(?)を確認させてください。 下記のように数個のテーブルとそれらを使用した数個のクエリがあったとします。 下記の場合に、もしどれかのテーブルを更新したとします。 その場合、アクセスを立ち上げて、クエリ3を実行するだけで、結果には反映されているのでしょうか?それとも、アクセスを立ち上げて、 クエリ1を実行し閉じ、クエリ2を実行し閉じ、最後にクエリ3を実行しないと、反映されていないのでしょうか? --------------------------------------------------------- テーブルリンクA 、テーブルリンクB、テーブルリンクC、テーブルリンクD ↓↓ テーブルAとテーブルBでクエリ1(マッチング)を作成 テーブルCとテーブルDでクエリ2(マッチング)を作成 ↓↓ クエリ1とクエリ2でクエリ3(マッチング)を作成 ------------------------------------------------- 続いて、もし上記でいちいち途中のクエリを実行しないと、 最後のクエリに反映されない場合、すべてをACCESSを立ち上げたと同時に自動実行し、自動で最後のクエリ(この場合、クエリ3)をエクスポートしたいと考えています。可能でしょうか? 素人な質問ですみません。 何卒よろしくお願いいたします。

  • Accessのクエリについて

    Accessの初心者です。 “クエリ”がよくわからなくて困っています。 (1)テーブルの情報を更新した場合、クエリも自動で内容が更新するのでしょうか? 複数のクエリがある場合、テーブル更新後すぐにアクセスを閉じて、次にアクセスを起動させた時はクエリの内容も更新されるか。 それとも、テーブル更新後に各クエリを実行しないと更新しないとでしょうか。 (2)クエリ実行後、表示されたデータの一部を書き換えて出力した場合、元のテーブルの内容も変更されてしまうのでしょうか。 教えてください。 どうぞよろしくお願い致します。

専門家に質問してみよう