
普通の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を使っています。
No.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つ目の値を放り込んじゃったりとか?
No.2
- 回答日時:
データベースは何を使っているんでしょうか?
ACCESS、ORACLE、SQLサーバーなどありますが…。
No.1
- 回答日時:
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
でした。これならサブクエリを使うことはできないと思うのですが・・・どうでしょう?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Oracle SQL update方法 2 2022/06/22 14:07
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Oracle sql(oracle)で質問です。 テーブルAのカラム名、日付(yyyymmdd)の値を テーブルB 2 2023/01/06 10:31
- Oracle update文で質問です。 下記の条件でupdateをしたいですが、どのようにしたら良いでしょうか。 2 2022/06/23 10:51
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- Oracle sqlのupdate文で質問です。 テーブルBの番号をキーにテーブルAの身長をテーブルBの身長に更新 2 2022/11/02 15:15
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLで複数のテーブルと結合した...
-
マイクロソフト系簡易データベ...
-
ADOX フィールドのRequiredプ...
-
accessでフィールド追加のあと...
-
FTPサーバーから受信したファイ...
-
[Access VBA] DoCmd.OpenForm ....
-
Access 2010で実行時エラー3061
-
Accessの画像挿入のVBAコード
-
ACCESSデータベースにV...
-
日付と文字列を条件としてDLook...
-
INT64対応のprintf系関数はあり...
-
DataTableに特定のフィールドが...
-
Access VBA 添付型フィールド
-
テーブルのデータ型の変更がで...
-
ADOでNullフィールドの抽出
-
C#での複数フィールドの条件付...
-
TextBox内の改行
-
ADOレコードセットのプロパティ...
-
Accessでテーブルのデータのみ...
-
Dir関数で読み取り順を操作でき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
INT64対応のprintf系関数はあり...
-
accessでフィールド追加のあと...
-
2つ目のレコードの値を取得す...
-
Accessのフィールド名に半角括...
-
DataTableに特定のフィールドが...
-
テーブルのデータ型の変更がで...
-
ACCESSデータベースにV...
-
クリスタルレポート(8.5)の書式...
-
クリスタルレポートで文字列の...
-
日付と文字列を条件としてDLook...
-
Access 2010で実行時エラー3061
-
ADOでNullフィールドの抽出
-
Access クエリで変数を参照する...
-
NULLを含む文字列の結合で...
-
AccessのDAOでフィールド名を配...
-
アクセス ADO Null以外のレコ...
-
クリスタルレポートで0件時の表示
-
FTPサーバーから受信したファイ...
-
C#で変数名の取得
-
c言語で自分のホームディレク...
おすすめ情報