Q質問

普通のUPDATE文はUPDATEするテーブル名を一つ記入して
UPDATE テーブルA SET フィールドA = 値A WHERE テーブルA.フィールドB = 値B
みたいな感じですが、私のしたい事はと言うと
UPDATE テーブルA,テーブルB,テーブルC
SET A.フィールドA = 値A
WHERE テーブルA.フィールドA = テーブルB.フィールドB
AND テーブルB.フィールドB = テーブルC.フィールドC
AND テーブルB.フィールドD = 値D
AND テーブルC.フィールドE = 値E
という具合に複数のテーブルがUPDATEするテーブルA以外のところで、互いに条件で結ばれており、FROM句でUPDATEしないテーブル名まで宣言しないといけなくなっています。そもそもこういうFROM句を使うUPDATE文は実行可能かも不明です。どなたか解決策お願いいたします。ちなみに開発ソフトはVBAを使っています。

A 回答 (3件)

SET句にもサブクエリを使えますよ。

UPDATE テーブルA
SET フィールドA = ( SELECT テーブルB.フィールドF
FROM テーブルB,テーブルC
WHERE テーブルB.フィールドB = テーブルC.フィールドC
AND テーブルB.フィールドD = 値D
AND テーブルC.フィールドE = 値E )
WHERE フィールドA = ( SELECT テーブルB.フィールドB
FROM テーブルB,テーブルC
WHERE テーブルB.フィールドB = テーブルC.フィールドC
AND テーブルB.フィールドD = 値D
AND テーブルC.フィールドE = 値E )

> VBAと言うと普通ACCESSですよね?
VBAからODBC経由でOracleやSQL Serverという例もあるので
一概にはAccessのみとはいえません。

    • good
    • 0

この回答へのお礼

SET句とWHERE句とサブクエリを別々に作るのはいいのですが、レコードが複数存在した時につじつま合うんでしょうか?
2つ目のレコードに3つ目の値を放り込んじゃったりとか?

お礼日時:2004/10/04 07:31

データベースは何を使っているんでしょうか?

ACCESS、ORACLE、SQLサーバーなどありますが…。

この回答への補足

ACCESSです。質問にも書いたとおりです。
VBAと言うと普通ACCESSですよね?

補足日時:2004/09/29 01:38
    • good
    • 0

UPDATE テーブルA
SET フィールドA = 値A
WHERE フィールドA = ( SELECT テーブルB.フィールドB
FROM テーブルB,テーブルC
WHERE テーブルB.フィールドB = テーブルC.フィールドC
AND テーブルB.フィールドD = 値D
AND テーブルC.フィールドE = 値E )

これでできます。

この回答への補足

ありがとうございます。
私もサブクエリを考えていたんですが、結合の入ったUPDATE文と全く同じ機能を果たすことができるんですか?
それとすいません。2行目の式を少し間違えていました。
SET テーブルA.フィールドA=テーブルB.フィールドF

でした。これならサブクエリを使うことはできないと思うのですが・・・どうでしょう?

補足日時:2004/09/28 07:37
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

注目の記事

仕事多忙、趣味なし、彼女なし……生きる楽しみは?

「恋人がいなくて暇だから休日は1人寂しく趣味の時間を過ごすしかない……」 「仕事が辛い。たまの休みに彼女と会う束の間の休みだけが楽しみ……」 こんな悩みをお持ちの方、あなたは恵まれている方だろう。 「教えて...

このQ&Aを見た人が検索しているワード


このカテゴリの人気Q&Aランキング

おすすめ情報