Microsoft Access ClubAccess超初心者対象ForumAccess初級者対象ForumAccess初・中級者対象ForumAccess VBA Tips ForumDAO、ADO、SQL Forum

     

No26709.SQLで複数条件のデータ更新

タイトルSQLで複数条件のデータ更新
記事No: 26709
投稿日: 2004/08/05(Thu) 11:24
投稿者: ながなが
OS:xp
Access Version:2003

いつもお世話になっています!

2つの条件に合った、データを更新しようとしています。
テーブル2にあるデータと同じものがテーブル1で見つかった場合、
テーブル1のフラグ項目を1に変更するというものです。
条件としては、伝番親と伝番子がキーになっているので、
それで抽出できたものを更新しようと思います。

以下のプロシジャーを記入しましたが、エラーになります。
副問い合わせは、複数回数の値、複数件のデータを戻す場合エラーとなるそうですが、
それ以上どう修正すればいいのか、わかりません。

sql = "UPDATE テーブル1 SET フラグ = 1 "_
   & "WHERE テーブル1.伝番親 = (SELECT テーブル2.伝番親 FROM テーブル2) AND " _
& "テーブル1.伝番子 = (SELECT テーブル2.伝番子 FROM テーブル2)"
CurrentProject.Connection.Execute sql

すみませんが、アドバイスよろしくお願いします_(_^_)_

タイトルRe: SQLで複数条件のデータ更新
記事No: 26712
投稿日: 2004/08/05(Thu) 11:50
投稿者: Tkwan
> すみませんが、アドバイスよろしくお願いします_(_^_)_

SQlはあまり得意ではないので、ADOで
rs1でテーブル1を、rs2でテーブル2を開き、

Do Until rs2.EOF
rs1.Filter = "伝番親 = " & rs2.伝番親 & " AND 伝番子 = " & rs2.伝番子
 Do Until rs1.EOF
rs1.フラグ=1
rs1.Update
rs1.MoveNext
Loop
rs2.MoveNext
Loop

タイトルRe: SQLで複数条件のデータ更新
記事No: 26713
投稿日: 2004/08/05(Thu) 11:54
投稿者: hatena
Inner Join を使えばいいかと思います。

ただし、SQLリファレンスのヘルプの記述例はまちがっているので注意してください。

UPDATE テーブル1 SET フラグ = 1 _
WHERE テーブル1 INNER JOIN テーブル2
ON テーブル1.伝番親 = テーブル2.伝番親 AND テーブル1.伝番子 = テーブル2.伝番子

タイトルRe^2: SQLで複数条件のデータ更新
記事No: 26719
投稿日: 2004/08/05(Thu) 14:32
投稿者: ながなが
Tkwanさん、hatenaさんこんにちわ!
お返事ありがとうございます_(_^_)_
Tkwanさんので、できそうですが(最終手段で使わせていただきます。)、
一応SQLでできるなら知ってみたい、ということでhatenaさんのように
記述してみました。
しかし、エラーが発生してしまいます。

sql = "UPDATE テーブル1 SET フラグ = 1 " _
& "WHERE テーブル1 INNER JOIN テーブル2 " _
& "ON テーブル1.伝番親 = テーブル2.伝番親 AND "_
& "テーブル1.伝番子 = テーブル2.伝番子"
CurrentProject.Connection.Execute sql

↑「クエリ式の構文エラー、演算子がありません。」のエラーメッセージが出てしまいますが。
何か原因がわかりますか?

タイトルRe^3: SQLで複数条件のデータ更新
記事No: 26722
投稿日: 2004/08/05(Thu) 14:59
投稿者: hatena
ごめんなさい。ぽけてました。
WHERE句にINNER JOIN は記述できませんね。

UPDATE テーブル1
INNER JOIN テーブル2
ON (テーブル1.伝番子 = テーブル2.伝番子) AND (テーブル1.伝番親 = テーブル2.伝番親)
SET テーブル1.フラグ = 1

ですね。

タイトルRe^4: SQLで複数条件のデータ更新
記事No: 26726
投稿日: 2004/08/05(Thu) 16:34
投稿者: ながなが
hatenaさん!完璧です!おかげさまでできましたヽ(^o^)丿うれしい!!

ほんと助かりました。ありがとうございました_(_^_)_

※()カッコがある、ない、でエラーになったりもするのですね。
()の大切さもわかった今回でした。


このAccessフォーラム過去ログ集は、Microsoft Access Club が運営しています


 

ページの先頭へ 前ページへ戻る