お世話になります。
ユニオンクエリAがあり、そのクエリを使用してクエリB(テーブルや別のクエリとも紐付け)を作成しました。問題なく抽出できます。
<クエリB>
ユニオンクエリA ----→ クエリX
|
---→ テーブル1
|
---→ テーブル2
|
---→ テーブル3
新たにユニオンクエリAを使って、クエリCを作成したところ「クエリが複雑すぎます」と表示されてしまいます。いくつかのテーブル/クエリと紐付けていたので、一つずつ取っていったところ、最終的にはユニオンクエリA一つでもエラーが出てしまいます。単純な選択クエリです。
クエリBは同じユニオンクエリAを使い、複数のクエリとテーブルとを紐付けているのにも関わらずエラーとなりません。。
どのようなことが考えられますでしょうか。
Accessを起動し直したり、端末自体も再起動しましたが状況変わらずでした。
また、ユニオンクエリA単体を開いても問題無く抽出されます。
ご教授の程、宜しくお願い致します。
No.5ベストアンサー
- 回答日時:
各テーブルの主キーに相当するフィールド。
具体的なデータ例☆。
期待する出力結果☆。
が無いと、残念ながら・・
私には想像でササッと幾つかのSQLを提示できるだけの
スキルを持ち合わせていません。
これだけでは何とも。。。ごめんなさいです。
ただ言えることは、、[] で括っているとはいえ F/O番号 というフィールド名は
マズイと思います。
最初のリンク先にも載っています。
http://office.microsoft.com/ja-jp/access-help/HA …
Access の予約記号 の部分です。
以下は珍怪答部類かもしれません、読み流して結構です。
GROUP BY で指定しているフィールドが多いので
非効率になっているようです。
UNION する前のAデータを、受注日で抽出し集計する。
それをマスターテーブルと繋げるようなことは出来ませんか。
SELECT Aデータ.受注日, Aデータ.コード, Aデータ.ライン, Sum(Aデータ.数量) AS 数量の合計, 0 AS [F_O番号]
FROM Aデータ
WHERE (Aデータ.受注日)=[forms]![メイン]![受注日])
GROUP BY Aデータ.受注日
とマスターをJOIN
Bテーブルも同様、これをUNION ALL?
のような方向です。
No.4
- 回答日時:
どうして何でしょうかねぇ?
もう手詰まりです。
最後になりますが、オプション→オブジェクトデザイナーの
クエリデザイン→すべてのフィールドを表示する のチェックは外してみてください。
外れていても個々のクエリで設定できますので
デザインビューで開くことのできるクエリのプロパティも確認してください。
現状でアドバイスできるのは、これくらいです。
使用している各テーブルの実際の
フィールド名・データ型・インデックス
クエリのSQL ビューがあれば新たな展開が有るかもしれませんが
珍怪答になってしまいそうです。
ご回答ありがとうございます。
実際のユニオンクエリはフォーム上のフィールド(受注日)を見ており、その日付で抽出するようにしております。当該ユニオンクエリを新たに作成したクエリ上のデータビューで表示させようとすると、まず日付を求められます。で、日付を入力すると、その日付で抽出されます。
次に当該ユニオンクエリをUNION ALLとし同じようにデータビューで表示させようとすると、日付を求められるのですが、その後、『ODBC‐‐呼び出しが失敗しました。』と表示されます。
おとといの段階では、UNION ALLとした場合、日付が求められる以前に『クエリが複雑すぎます』とメッセージが表示されていたのですが変わってしまいました。特にクエリの内容は変更しておりません。。
ちなみに、ユニオンクエリのSQLは、
SELECT Aデータ.受注日, マスター.ベンダー, Aデータ.コード, Aデータ.ライン, マスター.部位, マスター.寸法, マスター.不良フラグ, Sum(Aデータ.数量) AS 数量の合計, 0 AS [F/O番号]
FROM Aデータ INNER JOIN マスター ON Aデータ.コード = マスター.コード
GROUP BY Aデータ.受注日, マスター.ベンダー, Aデータ.コード, Aデータ.ライン, マスター.部位, マスター.寸法, マスター.不良フラグ
HAVING (((Aデータ.受注日)=[forms]![メイン]![受注日]))
UNION ALL SELECT [Bデータ].受注日, マスター.ベンダー, [Bデータ].コード, [Bデータ].ライン, マスター.部位, マスター.寸法, マスター.不良フラグ, Sum([Bデータ].数量) AS 数量の合計, [Bデータ].[F/O番号]
FROM [Bデータ] INNER JOIN マスター ON [Bデータ].コード = マスター.コード
GROUP BY [Bデータ].受注日, マスター.ベンダー, [Bデータ].コード, [Bデータ].ライン, マスター.部位, マスター.寸法, マスター.不良フラグ, [Bデータ].[F/O番号]
HAVING ((([Bデータ].受注日)=[forms]![メイン]![受注日]))
ORDER BY マスター.ベンダー, Aデータ.コード;
※テーブル名、フィールド名は多少変更させて頂いております。
テーブル名※()内はフィールド名ですが沢山ある為、当該ユニオンクエリで使用しているものを抜粋)
・Aテーブル(受注日、コード、ライン、数量)
・Bテーブル(受注日、コード、ライン、数量、F/O番号)
・マスター(ベンダー、部位、寸法、不良フラグ)
Aテーブルとマスター、Bテーブルとマスターはそれぞれ「コード」で紐付けています。
No.3
- 回答日時:
ユニオンクエリの項目数合わせなんですが
「番号」は元々数値型なのでしょう?
それを、番号:'000' で文字列扱いにしたらテーブル002の番号も文字列扱いになってしまいます。
番号: 0 か 番号: Null
にして元々のデータ型を崩さない方がベターです。
UNION は重複レコードを排除しつつ連結しますが
UNION ALL は全てを連結します。
目的に応じて使い分けますが、特に目的が無い場合は
UNION ALL ですと重複排除の処理が無い分だけ高速です。
早速のご回答ありがとうございます。
おっしゃる通り、番号は数値でした。教えて頂いたように「番号:0」に修正致しました。
なお、UNIONとUNION ALLの違いにつきましては一応認識はしているのですが、今回、UNION ALLだと選択クエリで表示するフィールドがフィールド1~8までないとエラーとなり、UNIONとすると、一つのフィールドでも問題ない・・・という部分がよくわかりません。
今回の例でいうと、クエリα+クエリβでトータル300レコードで、UNIONとしても300レコードなので、とりあえず特に問題は無いのですが。。今後、UNION ALLでクエリを作成し、特定のフィールドでさらに条件付けして抽出したい場合、その特定のフィールドだけでなく全てのフィールドを表示しなければならないってことになるのでしょうか。
No.2
- 回答日時:
Accessの仕様の制限値を超えている
http://office.microsoft.com/ja-jp/access-help/HA …
フィールド名などに不適切なモノが有る
http://office.microsoft.com/ja-jp/access-help/HA …
ファイルが壊れかかっている
などが考えられますけど、特に三番目。
新規accdbに全てインポートする。
ファイルタブ→オプション→カレントデータベースの
「名前の自動修正オプション」のチェックは全て外す
最適化を行う
で改善しませんか?
この回答への補足
スペル間違いがありました。
正しくは、「UNION ALL SELECT・・・」を「UNION SELECT・・・」に変更 です。
ご回答ありがとうございます。
新規mdbを作成し、例のmdbのテーブル及びクエリを全てインポートしました。
その後、オプションのチェックを外し、最適化を行ってみましたが状況変わらずです。。
ちなみに、ユニオンクエリAですが、
<クエリα>
テーブル001-----テーブル003
・グループ化
・テーブル001の数量を合計
<クエリβ>
テーブル002-----テーブル003
・グループ化
・テーブル002の数量を合計
クエリαとβをユニオンクエリとしてます。
一つ気になるのは、テーブル002には「番号」というフィールドがありますが、テーブル001には存在しない為、クエリαでは『番号:'000'』として、クエリβとフィールドを合わせてます。
フィールド1 フィールド2 合計 番号
あああ いいい 1 000
かかか ききき 10 000
さささ ししし 5 000
たたた ちちち 58 123
ななな ににに 21 456
ははは ひひひ 150 789
※フィールド1の「さささ」までがクエリα、「たたた」以降がβのレコード。
実際にはフィールドは9つあります。
で、このユニオンクエリを新規の選択クエリに追加して、全フィールドを追加すると問題ありません。「番号」を削除しても問題ありません。。しかし、フィールド1、フィールド2、合計のいずれかを削除しただけで「クエリが複雑すぎます」とエラーになってしまう次第です。
結果的に、ユニオンクエリの「UNION ALL SLECT・・・」を「UNION SELECT・・・」に変更したところ、現象が解消されました。
ALL付きとALL無しで何か制限事項などあるのでしょうか。
No.1
- 回答日時:
自分の体験ですが、
VBAを繰り返し訂正していると、何をやってもエラーが解消しないことがあります。
その時これ
「空のACCESSファイルを作成し、ここへそのファイルをインポート」
をやると原因がどこにあるのかわかりませんが解消します。
あなたとは状況は違いますが、ダメ元で試して下さい。
ご回答ありがとうございました。
教えて頂いた内容を試してみましたが、状況変わらずでした。また、データベースの最適化/修復も行ってみましたがダメでした。
<切り分け>
クエリBをコピーして開くと問題なく抽出されます。デザインで開いて
テーブル1を削除→OK
テーブル2を削除→OK
テーブル3を削除→OK
クエリXを削除→OK
全ての紐付けを解除しても問題ありませんでした。
フィールドが9個あり(上記で全ての紐付けを削除してるので、残ってるのはユニオンクエリAの全フィールドのみ)、その内1つを削除する分には問題ないのですが、残り8フィールドの内、どのフィールドを削除してもNGになることが発覚しました。
結果的に、ユニオンクエリAの9フィールドの内、フィールド9を削除する分には問題ありませんが、フィールド1~8の内1つでも削除すると「クエリが複雑すぎます」とでます。
新たにクエリを作成し、そのこユニオンクエリAのフィールド1~8を追加したところ問題無しで、やはり1つでも削除するとエラーとなります。なぜ、こんなことが起こるのか分かりません。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- PHP 【PHP/MySQL】コード上で生成したクエリを基に集計クエリを作りたい 1 2022/07/28 15:06
- Access(アクセス) Access DAOのExecuteメソッドのオプション(RecordsetOptionEnum)に 1 2022/09/19 07:34
- Access(アクセス) Access クエリ 同一テーブル内 複数フィールドの同時集計のやり方について 1 2022/05/18 19:01
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Access(アクセス) お世話になります ACCESSを使用しています 下記のクエリデータ(1)があります 商品名 行数 A 1 2022/09/05 08:52
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- Access(アクセス) Accessクエリで年月フィールドを年のみで抽出する方法について 2 2022/08/29 18:10
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
ACCESSでクエリを作成したら「式が複雑すぎます。」の表記が…
その他(データベース)
-
Accessで「クエリーが複雑すぎます」というエラーで……
その他(データベース)
-
ユニオンクエリで繋げられるテーブル(クエリ)の上限の個数は?
Access(アクセス)
-
-
4
「クエリが複雑すぎます」とのエラーが出る
Access(アクセス)
-
5
Accessエラー 複雑すぎるために評価できません
Excel(エクセル)
-
6
アクセスで追加した項目に全て同じ値を一発で入れたい
Access(アクセス)
-
7
フィールド数の多すぎる・フィールド数が一定でないテーブルのデータ結合の仕方?
Access(アクセス)
-
8
OR関数
その他(Microsoft Office)
-
9
【ACCESS/必須条件とOR条件を組み合わせる】
その他(Microsoft Office)
-
10
アクセス VBAについて FROM句の構文エラー
Access(アクセス)
-
11
ACCESSのSQLで、NULLかNULLでないかの判定
その他(データベース)
-
12
Accessにインポートしたら並び順が変わっちゃった
Access(アクセス)
-
13
Access 同じデータをたくさんのレコード(同一列)に一度に入力するには
Access(アクセス)
-
14
ACCESS 「パラメータの入力」を消したい!!
Access(アクセス)
-
15
Accessでテーブル名やクエリ名一覧の抜き出し
Access(アクセス)
-
16
Access→Excelへエクスポートすると日付の表示形式が変化する
Excel(エクセル)
-
17
Access2003 クエリで、空の列は作れますか?
Access(アクセス)
-
18
どこにもフォーカスを当てたくない
Access(アクセス)
-
19
式を簡単にしてください。ACCESS SQL
その他(データベース)
-
20
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
accessでクエリの結果だけをリ...
-
デザインビューにてテーブルが...
-
Access DAOのExecuteメソッドの...
-
アクセス 項目毎にデータを横...
-
アクセス:クエリの結合とリレ...
-
アクセスのクエリでSplit関数は...
-
教えてください! アクセスのac...
-
クロス集計クエリの結果をテー...
-
アクセスのスイッチボードで最...
-
access インポート時、既にある...
-
アクセスのクエリ 抽出について
-
ACCESSで行数指定(5万行目~8...
-
Accessのクロス集計→テーブル作...
-
アクセスでテーブル更新時刻の...
-
ExcelのVlookupでアクセスを参...
-
Access2010「クエリが複雑すぎ...
-
ACCESS テーブル作成の日付付与...
-
access テーブル作成クエリでテ...
-
ACCESSでの重複レコードの削除
-
ACCESSでテーブルの一部だけを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
クロス集計クエリの結果をテー...
-
アクセス:クエリの結合とリレ...
-
Access「レコードが削除されま...
-
アクセスのクエリでSplit関数は...
-
クエリのデータをテーブルに入...
-
accessでクエリの結果だけをリ...
-
デザインビューにてテーブルが...
-
アクセス 項目毎にデータを横...
-
ACCESSで行数指定(5万行目~8...
-
access インポート時、既にある...
-
教えてください! アクセスのac...
-
更新不可能なクエリに対して更...
-
アクセス クロス集計クエリ→テ...
-
ACCESSでの重複レコードの削除
-
Accessのクロス集計→テーブル作...
-
access テーブル作成クエリでテ...
-
Access DAOのExecuteメソッドの...
-
Access2010「クエリが複雑すぎ...
-
Access 末尾に0を追加したい
-
エクセル複数シートをアクセス...
おすすめ情報