• ベストアンサー
  • すぐに回答を!

ACCESSで他クエリーを利用して削除する

ACESS97で、他のクエリー(選択クエリー)の結果を利用 して、削除クエリーを作りますと、「更新可能なクエリー でなければなりません」というエラーが出ます。 具体的に言いますと、 テーブルAで「あ」というフィードで集計し1行 しかない行を削除したいのです。 私がTRYした方法は、「あ」というフィールドで テーブルAを集計し行数をカウントする選択クエリーを 作成し、別の削除クエリーでそれを参照しようと しました。 そうしましたら、前述のエラーが発生しました。 削除クエリーの中で行を集計するようなものが作れれば 要件は満たされるのですけど。。。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数129
  • ありがとう数1

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

  • ベストアンサー
  • 回答No.1
  • ARC
  • ベストアンサー率46% (643/1383)

どのクエリーが削除できて、どのクエリーが削除できないのかを書こうとすると、結構問題がややこしくなってしまうので、割愛します。 削除クエリーで削除できるかどうかは、そのクエリーをデータシートビューで表示した時に、レコードを削除できるかどうかによります。 もし、データシートビューで削除できないのなら、クエリーを工夫してやる必要がありますね。 例えば、こんな感じ。(テーブル名などを変更してから、クエリーをSQLビューにして、貼り付けてください) DELETE * FROM テーブルA WHERE あ In (SELECT あ FROM テーブルA        GROUP BY あ HAVING COUNT(あ) =1); 詳しくは、ヘルプで「サブクエリ」をお調べください。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございました。 バッチリです!! SQLはある程度学んでいたんですが・・・ そう、こういうのありましたね。 他にも anyとかallとかあるようで、 もっとお勉強します。

関連するQ&A

  • Accessの削除クエリで「クエリが複雑すぎて実行できません」

    困っています。どなたかご存知の方がいらっしゃいましたらお願いしますm_ _m (1)Aクエリ(選択クエリ)とBテーブルを削除クエリでつなぐ(結合プロパティはAクエリ全件から→B) (2) (1)の削除クエリは、 B全件から(From B*) Bのフィールド40列ぐらい(数値列)を落とし、 (Where 条件「0」←数値ゼロをいれる) (3)削除クエリを実行すると、「複雑すぎて実行できません。」というエラーメッセージがでてきて実行できません。何か駄目なのでしょうか? やりたいことは、 Bテーブルを、 Aクエリにあるレコードは抽出し、のちフィールドの値が0のものは削除したいのです。 よろしくお願いします。

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

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

  • ACCESS クエリの引き算

    よろしくお願い致します。 クエリ上で計算をしています。 デザインビューで フィールド   組      A班     B班    テーブル   データ    データ    データ 集計    グループ化   カウント   カウント 並べ替え 抽出条件 という状態で、さらに フィールドB班の隣に「A-Bの差」を設けて、「A班のカウント値」-「B班のカウント値」を単純に引き算をしたいのですが、うまくいきません。 集計を「演算」にしてみて、フィールドに  A-Bの差:Count([A班]-[B班]) と入力してみましたが、実行すると表示される値は全て「1」になってしまいます。 単純にカウントした値を引き算したいだけなのですが・・・。 ヘルプを見てもよく分からないので、教えてください。

  • Accessでクロスタブ集計クエリの結果の列を固定にしたい。

    Access2007を使っています。 フィールド1においてAまたはBに一致するもののみをフィールド2(あ、い、う、え、・・)ごとに Countするというクロスタブ集計クエリを作成しました。 デザインビューで見たCriteria行には「"A" or "B"」と入っています。 結果は、   A B あ 1   い 2 2 う 1   え   1 ・ ・ ・ ・ ・ ・ のような感じになります。 この結果を他のクエリ(クエリX)で参照し、AやBという列を使っているため、 もしも、AもしくはBが元のフィールド2の中に1レコードも無い場合、 クロスタブ集計の結果からAもしはBの列そのものがなくなってしまい、 クエリXを実行した際にエラーとなってしまいます。 フィールド2内のAやBのレコード有無に関係なく、常にクロスタブ集計クエリの 結果を一定にする方法はありませんでしょうか?

  • Access2003 クロス集計クエリでの合計

    ☆以下のようなテーブルで、フィールド[ID]~[C]があり、文字および数字のデータが混在しています。   ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓ =========================================== (テーブル(1)) [ID]  [A]      [B]    [C]     1    111     英語    10    2    222     英語    20    3    333     数学    30    4    111     国語    40   5    222     数学    50    6    333     国語    60    7    222     国語    70   8    333     英語    80     9    111     数学    90     =========================================== [課題] クロス集計クエリを作成する (1) フィールド[A]を行見出しに設定、    フィールド[B]を列見出しに設定、    フィールド[C]を集計する項目に設定する。   (2) フィールド[C]の値を列ごとに平均を計算し、    行ごとに合計を計算する。   ※ 列と行で、それぞれ集計した値を表示する   ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓ =========================================== [クロス集計結果]     合計  英語  国語  数学     111  140   10    40    90        222  140   20    70    50     333  170   80    60    30  --------------- 平均  150   36     56   56 ===========================================   ↑  ↑  ↑  ↑  ↑  ↑  ↑  ↑    上記のようなクロス集計クエリの結果を表示させたいのですが、 どうすればよろしいでしょうか? また、クエリだけでは出来ない場合は、SQLで教えていただければ幸いでございます。 お手数お掛けしますが、何とぞ宜しくお願い致します。

  • Accessの更新クエリについて質問です。

    よろしくお願いします。 集計したクエリを元に更新クエリを実行すると、更新できません。 やりたい作業としては、売上データテーブルのレコード数を得意先ごとにカウントして、得意先マスタテーブルのレコード件数フィールドを更新する作業です。 追加クエリで一度テーブルに追加してから、テーブル同士で更新も考えたんですが、レコード数が多いためにDBのサイズが爆発的に増えて廃案になりました。 何か良い方法があれば教えてください。

  • Access クエリ実行すると意図しないパラメータ

    Access の集計方法で困っています。 型番別に使用する数を把握するためです。 仕様数/台数は、標準は1台に1個仕様ですが、たまに2個以上仕様だったりするので用意したフィールドです。 ID(主キー):オートナンバー型 型番:テキスト型 仕様数/台数:数値型 上記テーブルがあるとします。(特に型番マスターデーブルを作成してリレーションしている訳ではないです。1つのテーブルです。) クエリですべてのフィールドを追加→集計(グループ化)→[型番]の集計行をカウントにしました。 その後、[型番のカウント]と[仕様数/台数]を演算する列フィールドを挿入しました。 クエリ実行をすると意図しない、"パラメーター入力?[型番のカウント]"メッセージが出ます。 原因は何でしょうか?素人ですみません。 又、他にもっと違う集計方法がありますでしょうか?

  • access クエリで集計した数値を別クエリで使いたい

    access2003で2000ファイル形式で以下のものを作っています。 テーブル「A」(フィールドは登録番号(主キー)、 書名) 「B」(登録番号(主キー)、 書名) がある。Aの「登録番号の最大値」(100とする)をクエリ(クエリ名「集計クエリ」)で集計して得た。 テーブルBの登録番号(1~30とする)を更新クエリで(1+100 ~ 30+100)に更新したい。そこでデザインビューで登録番号フィールド(テーブルB)の「レコードの更新」欄にビルダーで「[B]![登録番号]+[集計クエリ]![登録番号の最大値]」と入力して実行したら 実行できなかった。(仕方ないので「[B]![登録番号]+100」として実行したら更新できた。)今後もあるので「集計クエリ」で得た値を直接呼んで、更新クエリを実行したいのだが・・・。 わかりにくい質問で恐縮です。ご理解頂けたならば、ご教授ください。

  • クロス集計クエリ

    アクセス2003です。 行見出しフィールドに「10人」となるように、 合計: [Qクエリ]![フィールド] & "人" としたのですが、 "人"が付きません。 (集計方法:カウントです) 不可能なのでしょうか?

  • Access集計クエリについて

    Access集計クエリについて質問です。 (例) [フィールド名] りんご バナナ オレンジ りんご りんご バナナ ↓ <抽出条件> [フィールド名]   集計:[フィールド名] グループ化     カウント とすると、 ↓ <抽出結果> [フィールド名]   集計 りんご        3 バナナ        2 オレンジ       1 となります。 上記抽出結果を基に、集計カウント数が「3」の場合はOK、それ以外はNGというフィールドを追加したいのですが、その時の抽出条件はどうすればいいのでしょうか? <抽出結果> [フィールド名]   集計   判定 りんご        3     OK バナナ        2     NG オレンジ       1     NG Access初心者です。 どうぞよろしくお願いいたします。

専門家に質問してみよう