テーブル2の単語の行削除方法

このQ&Aのポイント
  • テーブル2の単語の行を削除する方法について教えてください。
  • テーブル1とテーブル2の関係を利用して、テーブル1のtangoと同じ値のテーブル2の単語の行を削除したいです。
  • 現在のクエリでは削除するレコードを含んだテーブルを指定する必要がありますが、テーブル2を指定する方法がわかりません。どうすればいいですか?
回答を見る
  • ベストアンサー

テーブル2の単語の行を削除にはどうすればいい?

アクセスです。 テーブル1には、tango テーブル2には、単語 というフィールドがあります。 テーブル1とtangoとテーブル2の単語を線で繋いで テーブル1のtangoと同じ値のテーブル2の単語の行を消したいのですが どういうクエリを作ればいいのでしょうか? 画像の状態 DELETE [テーブル1].tango, [テーブル2].単語 FROM テーブル1 INNER JOIN テーブル2 ON [テーブル1].tango = [テーブル2].単語; をやろうとすると 削除するレコードを含んだテーブルを指定してください となります。 「削除するレコードを含んだテーブル」は、テーブル2なのですが どこでテーブル2と設定すればいいですか? プロパティシートを見ても、テーブルを設定する場所がわかりませんでした。 レコードの削除に、 Whereとfromがありますが fromは選択できません。 この状態で、テーブル2の単語の行を削除にはどうすればいいですか?

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

  • ベストアンサー
  • m3_maki
  • ベストアンサー率64% (295/459)
回答No.1

> レコードの削除に、 > Whereとfromがありますが > fromは選択できません。 レコードを削除するのであって、 各フィールドの値を削除するのではありませんから フィールドを指定してしまうと Where 条件を指定できなくなります。 「*] を選択すれば、そのテーブルの全フィールドになりますから From を選択した状態になります。 DELETE [テーブル2].* FROM テーブル2 INNER JOIN テーブル1 ON [テーブル2].単語 = [テーブル1].tango; デザインビューで結合する場合のコツは テーブル2 から テーブル1 にドラッグすること。

YSNUANEMCICF
質問者

お礼

ご回答ありがとうございます。

関連するQ&A

  • ACCESSテーブルのデータの一部を削除

    よろしくおねがいします。 仕訳伝票のテーブル [仕訳伝票]、[仕訳明細]に 仕訳IDで 前者が1、後者がN のリレーション設定しています。 [仕訳伝票]に仕訳日のフィールドがあります。 仕訳日が削除日以前のデータを削除するのに次のようにしました。 1 DoCmd.RunSQL ("delete FROM 仕訳明細 where 仕訳日<=[削除日] INNER JOIN 仕訳伝票 ON 仕訳伝票.仕訳ID = 仕訳明細.仕訳ID ;") 2 DoCmd.RunSQL ("delete from 仕訳伝票 where 仕訳日<=[削除日] ;") 2 はうまくいきそうなのですが 1 が「 '実行時エラー 3075' クエリー式…の構文エラー演算式がありません」となります。

  • 別テーブルからSELECTした値を持つ行を削除するSQLは?

    削除 SQL がわかりません。 SQL-1 SELECT id FROM table2 WHERE date_in IS NULL; これで取得したidを持つレコード(別テーブル)を削除したいのですが、 どうすれば組み合わさるのでしょうか? DELETE FROM table1 WHERE id=???

  • 削除するレコードを含んだテーブルを指定してください

    DELETE テーブルA.店名, メインテーブル.店名 FROM メインテーブル RIGHT JOIN テーブルA ON メインテーブル.店名 = テーブルA.店名 WHERE (((メインテーブル.店名) Is Null)); というSQL分で、メインテーブルにないけど、テーブルAにはある、店名を削除しようとしたら、 「削除するレコードを含んだテーブルを指定してください。」 となってしまいます。 実際は30レコードくらいあります。 なぜ、削除できないのでしょうか?

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

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

  • NOT INをNOT EXISTSで書き直したい

    こんにちは。SQLでNOT INが実行速度が遅いため、EXISTSで書き直したいのですが、思っている結果がでません。 SQLのどこが間違っているかお教え頂けませんでしょうか? ■ ・テーブル名:R_TABLE ・フィールド:id データ: id(ユニークではない) 001 002 003 003 003 007 008 009 ■ ・テーブル名:P_Master ・フィールド:id データ: id(ユニーク) 001 002 003 ■やりたい事 R_TABLEのデータを条件によって削除したい。 条件はP_MASTERに無いR_TABLEの行を削除したいです。 ■欲しい結果 R_TABLE 001 002 003 003 003 ■書いたSQL DELETE FROM R_TABLE WHERE R_TABLE.id NOT IN (SELECT R_TABLE.id FROM R_TABLE INNER JOIN P_MASTER ON R_TABLE.id = P_MASTER.id) これは正しい結果がでました。 書きなおしたSQL DELETE FROM R_TABLE WHERE R_TABLE.id WHERE NOT EXISTS (SELECT R_TABLE.id FROM R_TABLE INNER JOIN P_MASTER ON R_TABLE.id = P_MASTER.id) 結果はR_TABLEから何も消されていませんでした。 どこを修正すれば正しい結果が得られるでしょうか? 副問い合わせで、R_TABLEとP_MASTERのINNER JOINの結果が得られ、R_TABLEからINNER JOINに含まれないデータ削除しろという命令だと思っていたのですが違うみたいです。 どこを修正すればよろしいでしょうか? よろしくお願いします。

  • 「削除するレコードを含んだテーブルを指定してくださ

    アクセスです。 DELETE T元テーブル.文字, T削除対象テーブル.文字 FROM T削除対象テーブル RIGHT JOIN T元テーブル ON T削除対象テーブル.文字 = T元テーブル.文字; このSQL文はどこがおかしいですか? T元テーブルとT削除対象テーブルで同じ文字があるのなら、T削除対象テーブルの文字のレコードを削除したいのですが、 この削除クエリを実行しようとすると 「削除するレコードを含んだテーブルを指定してください。」 とメッセージが出ます。 テーブルの指定はどこからどのように行えばいいのでしょうか? T削除対象テーブルを指定したいです。

  • 一定以上の行があれば最大値を持つ行を削除するSQL

    MySQL5にて、あるテーブルの特定フィールドの数(つまりcount値)が一定値以上であれば、間引きのため別のフィールドの値で最大値をもつ行を削除するSQLを考案中です。 イメージとしては以下の通りですが、SQLとしては誤っており、また、冗長です。 DELETE FROM table WHERE id={$id} AND (SELECT COUNT(*) FROM table WHERE id={$id}) > 5 AND begin = (SELECT MAX(begin) FROM table WHERE id={$id}); よい知恵をお授けください。

    • ベストアンサー
    • MySQL
  • 2つのテーブルで重複する値のレコードを削除したい

    削除クエリ?重複クエリ?について教えてください。 テーブル1 フィールド"番号"には 1 2 3 テーブル2 フィールド"番号"には 3 4 5 があるとします。 「テーブル2と重複しているテーブル1のレコードを削除する」 (この場合「3」が重複しているのでテーブル1の3が入力されているレコードを削除) としたいのですがどいゆうSQL文を書けばいいのかわかりません。 ご教授よろしくお願いします。

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

    初歩的なことで もうしわけありません。チンプンカンプンです。 身の回りにある本で、削除クエリーすら捜すことが出来ませんでした。 教えてください。 宜しくお願いします。 Aテーブルから 以下の条件のレコードを削除したいです!! ※条件※ (Aテーブル.名前 = Bテーブル.名前 ) かつ、(Aテーブル.内訳 = NULL) レイアウト Aテーブル: 処理日付 → テキスト 8文字 名前 → テキスト 5文字 内訳 → テキスト 8文字 金額 → 通貨型 (テーブル数 60) などなど・・・ Bテーブル: 名前 → テキスト 5文字 で、こんな感じで 記述しました。 DELETE Aテーブル.内訳, Aテーブル.* FROM W_MB INNER JOIN Bテーブル ON Aテーブル.名前 = Bテーブル.名前 WHERE (((Aテーブル.内訳) Is Null)); すると こんなメッセージが→『更新可能なクエリーでなければなりません。』 な・なぜなのでしょう・・・

  • 異なる二つのテーブルの結合について・・・

    お世話になっております。 ちょっとややこしい質問になります。 「1」 Aと言うテーブルのAAと言うカラムから、$AAAと言うレコードを抽出致しました。ここまでは出来ました。(ここでの抽出結果を$CCCと致します。) 「2」 「1」の抽出結果($CCC)を元に、Bと言うテーブルのBBと言うカラムから、BBBと言うレコードも抽出し結合したいと考えております。 一番の問題は、「1」で出た結果(CCC)を元に、抽出する事が出来ません。 「1」のソースのみ完成してます。 $rs=$DB->query("SELECT * FROM `A` WHERE AA = '$AAA' ↑の抽出結果=$CCCを元に↓ $rs=$DB->query("SELECT * FROM `B` WHERE BB = '$CCC' 結合させたいんです!! セクションしているので結合できないとバラバラになってしまいます。。。。 ご教示お願い致します! inner join を使うのは分かるのですが・・・進めません。(泣)

    • ベストアンサー
    • MySQL

専門家に質問してみよう