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を使っています。

質問者からの補足コメント

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

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

    No.1の回答に寄せられた補足コメントです。 補足日時:2004/09/28 07:37 通報する
  • ACCESSです。質問にも書いたとおりです。
    VBAと言うと普通ACCESSですよね?

    No.2の回答に寄せられた補足コメントです。 補足日時:2004/09/29 01:38 通報する

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のみとはいえません。

この回答へのお礼

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

お礼日時:2004/10/04 07:31
    • good
    • 0

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

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

この回答への補足あり
    • 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 )

これでできます。

この回答への補足あり
    • good
    • 0

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

新しく質問する

注目の記事

鬼は外!福は内〜!節分特集

春が来る季節の変わり目に豆を撒いて邪気を追い払い、無病息災を願う風習“節分”。落花生を撒いたり、掛け声も地方さまざま。節分をより楽しめる特集です。

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


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

おすすめ情報