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で質問しましょう!

注目の記事

パートナーに気持ちよく家事をしてもらう方法を心理学者が指南

共働きなのだから家事は助け合ってやろうね――。夫は、そう言ってくれていたのに、いざ結婚生活がはじまってみたら何もしてくれない。そんな不満を抱く女性は少なくないだろう。「教えて!goo」に「気持ちよく、主人...

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


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

おすすめ情報