• 締切済み

Access97の削除クエリーについて

imoの回答

  • imo
  • ベストアンサー率35% (28/78)
回答No.1

これは選択クエリーにして実行した時に更新(追加)可能なクエリーとして データを抽出できますか?できないのならば結合の方法がおかしいのではないでしょうか? 名前で結合しているようですが Bテーブルの名前は主キーになっていないと 更新(追加)可能なクエリーにはならないとおもいます。 DELETE Aテーブル.*, Aテーブル.名前, Aテーブル.内訳 FROM Aテーブル INNER JOIN Bテーブル ON Aテーブル.名前 = Bテーブル.名前 WHERE (((Aテーブル.名前)=[Bテーブル]![名前]) AND ((Aテーブル.内訳) Is Null)); 困ったときはF1キーを押してヘルプを参照してみてください。

pen26
質問者

お礼

ありがとうございます。 『主キー』の設定をしたら、バッチリ解決しました!! HELPですよね・・・ あれを読んでもまだ理解できなくて・・・ HELPを使う HELPが欲しいくらいです。 とにかく ありがとうございました!!

関連するQ&A

  • ACCESSクエリで複数テーブルの値の結合について

    現在、ACCESS2000で2つのテーブルの値を表示するクエリを作成中です。 テーブルは外部データよりインポートしています。 Aテーブル KEY1 | KEY2 | 値1 -------------------------- 00000001 | AAAAAAAA | 100 00000001 | BBBBBBBB | 200 00000002 | AAAAAAAA | 1000 Bテーブル KEY1 | KEY2 | 値1 -------------------------- 00000001 | AAAAAAAA | 500 00000002 | BBBBBBBB | 300 これを、 KEY1 | KEY2 | 値1 ------------------------------------------------ 00000001:00000001 | AAAAAAAA:AAAAAAAA | 100:500 ←(1) 00000001:NULL | BBBBBBBB:NULL | 200:NULL ←(2) 00000002:NULL | AAAAAAAA:NULL | 1000:NULL ←(3) NULL:00000002 | NULL:BBBBBBBB | NULL:300 ←(4) と表示したいのです。 INNER JOIN では、上記(1)しか表示されません。 また、LEFT JOIN では、(1)(2)(3)は表示されますが、(4)が表示されません。 SQLは下記です(INNER JOINを使用した場合) SELECT [Aテーブル.KEY1] & ":" & [Bテーブル.KEY1] AS KEY1, [Aテーブル.KEY2] & ":" & [Bテーブル.KEY2] AS KEY2, [Aテーブル.値1] & ":" & [Bテーブル.値1] AS 値1 FROM Aテーブル INNER JOIN Bテーブル ON ([Aテーブル].[KEY1]=[Bテーブル].[KEY1]) AND ([Aテーブル].[KEY2]=[Bテーブル].[KEY2]); どなかた教えてください。お願いします。

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

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

  • クエリの遅さの原因

    下記のクエリーをそれぞれ試してみたところ、圧倒的に下の方が遅くなってしまいました。 $rs = mysql_query("select * from A INNER JOIN B ON B.cat = A.id order by B.id desc LIMIT 1, 10 ;",$con); $rs = mysql_query("select * from A INNER JOIN B ON B.cat = A.id where B.name is not null group by B.area order by B.id desc LIMIT 1, 10 ;",$con); where B.name is not null group by B.area この処理はそれほど負荷が掛かってしまうのでしょうか。 他に良い書き方(方法)がありましたら教えてください。

    • ベストアンサー
    • MySQL
  • ACCESS 追加クエリ

    二つのテーブルがあります。テーブルAには10個のデータ(A-J)、Bには5個のデータ(A-E)が記載されています。 BにはないAのデータ(F,G,H,I,J)をBに追加するクエリを作りましたが、『出力先’DATA'が重複しています。』というエラーが出ます。 二つのテーブルの差分を取っているためこのようなことになるのですが、回避する方法を教えてください。 クエリ INSERT INTO テーブルB ( DATA_B, DATA_B ) SELECT [テーブルA].DATA_A, [テーブルB].DATA_B FROM テーブルA LEFT JOIN テーブルB ON [テーブルA].[DATA_A] = [テーブルB].[DATA_B] WHERE ((([テーブルB].DATA_B) Is Null));

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

    アクセス2000の削除クエリーを実行すると、「削除できません」の表示がでます。テーブルを2つ(AとB)追加して、顧客CDでリレーションを組みます。テーブルAからはアスタリスクマークをドラッグしてますので、FROMがでます。テーブルBの顧客CDをドラッグするとWHEREがでます。つまり、テーブルBにある顧客CDを全部テーブルAから削除したいのですが、データウィンドウは表示されますが、削除を実行すると、「削除できません」の表示がでます。アクセス2.0では可能だったのですが、アクセス2000ではなぜできないのでしょうか??

  • アクセスクエリ メモ型だとエラーになる

    アクセスのテーブル1(主キーなし)に *********************************************************** フィールド1(メモ型) あああ いいい ううう いいい *********************************************************** と言うデータがあるのですが 「あああ」「ううう」は1個で「いいい」は2つあります。 これを、クエリ1で *********************************************************** SELECT テーブル1.フィールド1, Count(テーブル1.フィールド1) AS フィールド1のカウント FROM テーブル1 GROUP BY テーブル1.フィールド1; *********************************************************** と作り、 新しいクエリで *********************************************************** SELECT テーブル1.フィールド1, クエリ1.フィールド1のカウント FROM テーブル1 INNER JOIN クエリ1 ON テーブル1.フィールド1 = クエリ1.フィールド1; *********************************************************** としたいのですが、 メモ型ではダメなのでしょうか? メモ型でフィールドを宣言しつつ、 このようなクエリを作るにはどうすればいいですか? テキスト型にすると問題なくいけます。

  • Access2003 更新クエリについてご教授下さい。

    初めまして。 今回、初めてご質問させていただきます。 Access2003の更新クエリについてご教授お願いします。 AテーブルとBテーブルがあります。 ■Aテーブル(ALLテーブル)  各フィールド名:  名前(テキスト型)/完了(Yes/No型)/備考欄(テキスト型) ■Bテーブル(更新させたいテーブル)  各フィールド名:  名前(テキスト型)/完了(Yes/No型)/備考欄(テキスト型)  (※Aテーブルと同じです。) Bテーブルの内容をAテーブルへ更新させたいのですが 名前/完了のフィールドは、更新クエリで完成出来ましたが 備考欄の更新が出来ません。 (※備考欄には、コメントがそれぞれ入っています。) どのような形でクエリを作成すれば Aテーブルへ更新が可能になるのでしょうか? 以上、ご教授お願い致します。

  • アクセス削除クエリ「複雑すぎてできません」のエラー

    テーブルA(フィールド40個)があります。 削除クエリで、From *Aテーブル(すべて) フィールド30個 について Where  0 (数字ゼロ) の条件を入れます。 これを実行すると「クエリが複雑すぎてできません」が でてきます。 フィールド30個についてすべて0のレコードを削除したいのです。 どういう条件を入れればいいでしょうか?

  • ACCESS クエリでの抽出の方法について

    毎度お世話になっております。 ACCESS2003、SQLSERVER2000を使用しています。 以下のテーブルがあります。 テーブル1 フィールド1   フィールド2   A        10   A        20   A        -10   B         1   B         2   B         3 フィールド1をグループ化し、 フィールド2に0より小さい数がある場合はNG、 ない場合はOKと表示したいのです。 希望する結果 フィールド1   フィールド2   A         NG   B         OK 私が考えた方法は、 1.クエリ1(フィールド2が0以下のフィールド1を抽出する)を作成 2.テーブル1とクエリ1をLEFT JOINし、IS NULL ならOK、そうでないならNGを表示 としました。希望した結果は得られましたが、 もっとスマートな方法(一つのクエリでできるような方法)、 または別解をご教授ください。 よろしくお願いします。

  • アクセスの追加クエリについて

    二つのテーブル間(AとB)を追加クエリを使い AからレコードをBに追加することは出来たんですが、 逆にBからAにレコードを追加しようと選択クエリを追加クエリに変更しようとしたんですが、ウィザードの追加先テーブル名にAのテーブル名が表れないですがその理由が全く分からないので分かる方教えていただけませんか? AとBのレコード内のフィールドは同じです。 AからBにレコードを移行する処理としてマクロを使いアクションとして ・クエリを開く(これは追加クエリです) ・SQLの実行(上と同じクエリを削除クエリに変更し、そのSQL文をSOLステートメントに貼り付けました) 上の処理は問題なく出来たので逆のBからAへレコード移行処理のマクロを作ろうとしたのですが、追加クエリの追加先テーブルにテーブルAの名前が出てこないので困っています。こういったAからB。BからAという処理は追加クエリで出来ないのでしょうか?